• Python 入门:基本语法


    对于多数从其他编程语言转入Python的来说,或多或少会有些不习惯。如果沿用其他编程语言的语法来写Python代码,那么碰壁是不可避免的了。

    本文是基于我看了两个小时的官方文档(Python 2.7 : https://docs.python.org/2/tutorial/index.html , 至于我学习Python2.x的原因:工作需要),

    从中提取的重要的细节,以避免再次踩坑。

    先上一个Python文件(Foo.py):

    #!python
    # -*- coding: utf-8 -*-
    
    '''
    python 的注释:
        多行注释: 用成对的3个单引号或者3个双引号组成 (例如当前位置)
        单行注释:使用#
    '''
    
    # 定义一个foo函数,用于把指定msg打印 count次
    """
        params:
            count: int, 打印的次数
            msg: string,消息内容
            useFor:多次打印时,是否采用for loop。
        raise:
            ValueError : 当count<0时抛出
    """
    def foo(count=1, msg='Hello'+' '+ "Foo", useFor=1):
        if count < 0 :
            raise ValueError('count < 0')
        if useFor : # 0,1 可以用作bool判定
            print("print use for, count = " + bytes(count) +" :")
            for i in range(count):    # range(N),会生成一个从0到N的list,恰好可以用作索引
                print(msg+' '+bytes(i))
        else:
            print("print use while, count = " + bytes(count)+" :")
            i = 0
            while i < count:
                print(msg+" "+bytes(i))
                i+=1    # python中不支持 i++的写法,支持 i+= 的写法
    
    
    if __name__ == '__main__' : 
        print('main in Foo.py')
        foo(2,useFor=1)
        foo(useFor=0, count=3);
        foo(-1)
        

    1、文件头

    作为一个脚本语言,文件头指定一些执行环境等,是很常见的事情。在shell中就很常见的。

    那么对于Python脚本,也有同样的内容:

    1.1 指定解释器

    脚本语言,很常见的配置:

    #!/bin/sh           shell脚本
    #!/usr/bin/perl     perl脚本
    #!/usr/bin/python   python脚本
    #!/usr/bin/python3  python3脚本
    #!/usr/bin/python2  python2脚本
    
    而有时不太清楚脚本解释器的具体全路径名;或者开发环境与运行环境的安装路径不同。为了保证兼容性,也可以写作:
    #!/usr/bin/env python3
    这样运行时会自动搜索脚本解释器的绝对路径。

    1.2 指定文件编码

    py文件的默认编码是ASCII,上面的脚本中很多都是ASCII不支持的,那么需要指定文件编码。格式是:

    #-*- coding: encoding -*-

    2、注释

     python 的注释:

        多行注释: 用成对的3个单引号或者3个双引号组成 (例如当前位置)
        单行注释:使用#

    3、代码块,缩进

    代码块:从上面的Foo.py文件中,很容易可以看出,代码块是以 冒号 : 开始的。不论是function定义,if,else,还是loop(for, while)

    都是用 : 作为代码块的开始。不是用 { } 来包括代码块的。

    缩进:Python的程序中,不是用 { } 来包括代码块的,用缩进来维持代码块的。不要写 tab,用4个空格为缩进。

    4、基本数据类型

    4.1 String

    Python中的字符串与JavaScript中的字符串一样,既可以使用单引号,也可以使用双引号。

    不会像Shell那样具备转义。如果需要对字符转义,使用 ,如果你不想要 字符串内部的 代表转义,那需要在第一个引号前加上 r 。例如:

    #!python
    #-*- coding: utf-8 -*-
    
    '''
    Python String,
    1)表示字符串:用单引号或者双引号。他们是等价的,不存在取值转义等问题
    2)字符串内的表示转义
    3)如果不希望字符串内的表示转义,需要在字符串前加上 r 。
    4)判定两个字符串是否相等,类似于JavaScript,用 == 即可 
    5)两个字符串拼接,使用 + 即可
    6)String 与 Number 拼接,不能直接使用 +
    '''
    def testString():
        a = 'aaa'
        b = "aaa"
        print(a==b)
        print(a==b)
        c = "
    "
        d = r"
    "
        print(c)
        print(d)
        print(c == d)
    
    
    if __name__ == '__main__' : 
        print('current module name is "' + __name__+'"')
        testString()

    4.2 Number

    #!python
    #-*- coding: utf-8 -*-
    
    '''
    Python String,
    1)对于数字,Python与JavaScript仍然是类似的,没有那么多的限制
    2)可以在数字上直接进行 + - * / 运算
    3)String 与 Number 拼接,不能直接使用 +
    '''
    def testNumber():
        a = 1    # int 
        b = 1.0 # float
        c = 1.1
        print(a==b)
        print(b<c)
        print(a + (b - c * 3) / 2 )
        d = "1"
        print(a == d)
        print(bytes(1)+d)

    4.3 Boolean

    类似于JavaScript,Python的boolean也是多变的。

    True, False 分别表示真、假

    以下几种情况是false:
    1.None
    2.False
    3.任何类型的数字0,包括0,0.0,0L,0j
    4.空的序列(sequence)或者映射(mapping)类型对象
    5.对于用户自定义类型的对象,如果其类定义了__nonzero__() 或者 __len__()特殊方法并且返回False或者0

    对于最后一条规则,有几点需要说明:
    1.如果类没有定义这两个方法中的任何一个,则这种类型的对象真值测试时总是为True
    2.如果类同时定义了__nonzero__() 和 __len__(),只会参考__nonzero__()的返回值

    以下几种情况是false:1.None2.False3.任何类型的数字0,包括0,0.0,0L,0j4.空的序列(sequence)或者映射(mapping)类型对象5.对于用户自定义类型的对象,如果其类定义了__nonzero__() 或者 __len__()特殊方法并且返回False或者0
    对于最后一条规则,有几点需要说明:1.如果类没有定义这两个方法中的任何一个,则这种类型的对象真值测试时总是为True2.如果类同时定义了__nonzero__() 和 __len__(),只会参考__nonzero__()的返回值

    def testBoolean():
        a = True
        b = False
        print(a!=b)
        if(3):
            print("3 is True")
    
    if __name__ == '__main__' : 
        print('current module name is "' + __name__+'"')
        testBoolean()

    5、 变量

    Python中的变量,可以分为 local variable, global variable。

    1)local variable 的作用与在一个代码块内部

    2)global variable 的作用与在一个Python的module (一个 py文件) 内。它属于模块对象的。如果 A module 中定义了 一个global 变量 a, B module import 了 A, B仍然不能直接使用 A模块的global 变量 a(例如不能 print a),而应该通过 A.a来使用。

    声明 global 变量需要使用 global 关键字,且有两步,先声明后赋值。

    声明local 变量,不需要额外的关键字。

    #!python
    #-*- coding: utf-8 -*-
    
    '''
    全局变量
    '''
    global moduleName
    moduleName = __name__
    
    a = 1
    def printModuleName():
        print(a+1)
        print(__name__)
        print(moduleName)
    
    '''
    if __name__ == '__main__' : 
        print('current module name is "' + __name__+'"')
    '''
    
    printModuleName()
    print(a)

    6、异常捕获与处理

    Java中的try ... catch .. finally,在Python中也有类似的处理机制:try ... except ... else ... finally ...

    7、参数 * 与 **

    在Python中,可变参数用 *表示,本质是有个tuple。 keyworld参数用 **表示

  • 相关阅读:
    C# 使用Dev控件为gridView添加复选框,实现多选和单选
    C# 关于LINQ基础随笔
    Camstar客制化开发做查询操作(Designer中存放SQL语句)
    ASP.NET 实现自动登录(自定义自动登录时间期限)
    ASP.NET 页面生命周期-动态控件编程(动态添加控件并使用动态控件值)
    Camstar客制化开发查询数据库数据并显示在JQDataGrid表中(SQL语句编写在UserQuery中)同时获取JQDataGrid中值回传到Designer中
    Camstar客制化开发查询数据库数据并显示在JQDataGrid表中(SQL语句编写在代码中)
    WPF开发中常用的几种布局元素
    Cocos2dx 内存管理机制(1)
    cocos2dx 坐标系统详解
  • 原文地址:https://www.cnblogs.com/f1194361820/p/8621319.html
Copyright © 2020-2023  润新知