zoukankan      html  css  js  c++  java
  • 3. Python基础语法

    注释

    我们在文言文中经常会看到注释,注释可以帮助读者对文章的理解。代码中的注释也是一样,优秀的代码注释可以帮助读者对代码的理解。当然在代码编写过程中,注释的使用不一定只是描述一段代码,也可能的是对代码的调试。

    Python注释一共有# 、''' ''' 、""" """三种方式。我们在编写代码中,一般用#进行单行注释,''' '''或""" """进行多行注释。如下代码所示:

    # 这是一段注释
    
    '''
    这是多行注释,使用英文单引号。
    这是多行注释,使用英文单引号。
    这是多行注释,使用英文单引号。
    '''
    
    """
    这是多行注释,使用英文双引号。
    这是多行注释,使用英文双引号。
    这是多行注释,使用英文双引号。
    """
    
    # 单行注释 这是一个加法
    def add(a, b):
        return a + b
    # 先把print(add(1, 2))注释掉,下次如果用到print(add(1, 2))把#去掉
    # print(add(1, 2))
    

    我们右击运行,发现不会输出任何内容,虽然我们定义了一个add函数,但是并没有调用add函数,当我们把# print(add(1, 2))的#去掉时,再右击运行,打印台会输出3。关于函数的使用,会在后面内容进行介绍。

    变量

    变量的概念和数学方程式变量是一致的。比如一元一次方程 x+1>5 ,x就是一个变量。
    在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。变量在程序中用一个变量名表示,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,不能使用关键字作为变量。如下代码所示:

    a = [1, 'test', '你好', 1 + 2, False, [2, 3, 'CHINA']]
    A = 1.1
    b = '1'
    B = 'test'
    c = True
    _C = False
    d1 = 'test'
    name = {'testDog', 'Jim', 'Mary', 'Jim', 'Jack', 'Rose'}
    
    

    Python中关键字如下所示:

    and Exec not
    assert Finally or
    break For pass
    class From print
    continue Global raise
    def If return
    del Import try
    elif In while
    else Is with
    except lambda yield

    缩进

    一般当我们定义一个函数、使用if…else、while等时,第二行都必需要进行缩进。使用四个空格或键盘上的tab键表示缩进。如下代码所示:

    def add(a, b):
        return a + b
    
    if 0 < 1:
        print("True")
    
    

    如果我们缩进位置不对时,运行下面这段代码一般会报IndentationError: expected an indented block错误。如下代码所示:

    def add(a, b):
     return a + b
    
    print(add(1, 2))
    

    input和print

    input意思是等待用户输入,print我们之前也已经用过,表示打印的意思。我们运行下面这段代码,会发现Pycharm打印台需要我们输入2个数,当我们输入第一个数字时,按下Enter,会让我们输入第二个数,输完第二个数,按Enter,程序运行结束。当然下面这段代码是有Bug的,猜猜Bug在哪里呢?如下代码所示:

    a = input("请输入第一个数:")
    b = input("请输入第二个数:")
    print("输入的2个数和为:", (a + b)
    

    上面代码将输出如下内容:

    请输入第一个数:1
    请输入第二个数:2
    输入的2个数和为:3

    import与from...import

    python 用 import 或者 from...import 来导入相应的模块。
    将整个模块(somemodule)导入,格式为: import somemodule
    从某个模块中导入某个函数,格式为: from somemodule import somefunction
    从某个模块中导入多个函数,格式为:from somemodule import firstfunc, secondfunc, thirdfunc
    将某个模块中的全部函数导入,格式为: from somemodule import *

    import

    import time
    
    print(time.strftime('%Y.%m.%d',time.localtime(time.time())))
    

    上面代码将输出如下内容:

    2019.02.01

    from...import

    模块导入函数

    from datetime import datetime
    print(datetime.now())
    

    上面代码将输出如下内容:

    2019-02-01 10:14:45.614800

    从.py文件导入

    已知目录结构如下:

    test1.py代码如下:

    def add(a, b):
        return a + b
    
    

    test2.py代码如下:

    from test1 import add
    
    print(add(1,2))
    
    

    运行test2.py打印如下内容:

    3

    注意,该目录结构有一个__init__.py文件,这个__init__.py文件声明该目录是一个python模块。小伙伴可以试试去掉__init__.py后是否可以执行。

    定义一个函数

    def 函数名(参数列表):
        函数体
    

    函数实例

    def hello():
        print("hello world")
    

    创建一个类和对象

    class People():
        """
        定义一个人类
        """
        def __init__(self, name):
            self.name = name
    
        def my_name(self):
            print("我的名字是:"+self.name)
    
    
    bobby = People('bobby') # 创建一个对象
    bobby.my_name()
    
    

    上面代码将输出如下内容:

    我的名字是:bobby

    注意

    1. 第一种方法init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。
    2. self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

    我们创建了一个People类,People类有一个构造函数,当我们创建一个People类的对象时需要传入一个参数,创建的对象可以调用People类中的方法

    异常处理

    我们在编写Python程序时,经常会因为一些错误导致剩下的代码无法执行,为了解决这个问题,Python内置了一套try...except...finally...的错误处理机制。我们先看一段会抛出异常的代码

    a = 10
    
    if a > 0:
        b = a / 0
    else:
        b = a + 1
    
    print(b)
    
    

    上面代码将输出如下内容:

    Traceback (most recent call last):
    File "F:/新建文件夹/blogApiTest/test5.py", line 42, in
    b = a/0
    ZeroDivisionError: division by zero

    上面代码比较简单,我们发现,我们的当a>0时,我们将执行 b = a / 0,除数为0。我们都知道除数不能为0,所以Python程序会 抛出异常,那么我们怎么才能接受这个异常并使程序继续执行下去呢?我们可以使用try...except...finally. 如下代码所示:

    try:
        a = 10
        if a > 0:
            b = a / 0
        else:
            b = a + 1
        print(b)
    except ZeroDivisionError as e:
        print(e)
    finally:
        print("end")
    
    

    上面代码将输出如下内容:

    division by zero
    end

    我们将我们的程序放在try里面,如果发生错误抛出ZeroDivisionError 异常,这里为了简便,把ZeroDivisionError 重命名为e,当然,我们也可以不使用finally,可以直接使用try...except 。这里有个问题,我是怎么知道会抛出ZeroDivisionError 异常的呢?我将给大家罗列一些常见异常,如下表格所示:

    异常 描述
    AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
    IOError 输入/输出异常;基本上是无法打开文件
    ImportError 无法引入模块或包;基本上是路径问题或名称错误
    IndentationError 语法错误(的子类) ;代码没有正确对齐
    IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
    KeyError 试图访问字典里不存在的键
    NameError 使用一个还未被赋予对象的变量
    SyntaxError 语法错误
    TypeError 传入对象类型与要求的不符合
    ValueError 传入一个调用者不期望的值,即使值的类型是正确的

    当然如果我们不知道会抛出什么异常,我们可以使用BaseException,因为所有的错误类型都继承自BaseException,所以在使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。比如:

    try:
        a = 10
        if a > 0:
            b = a / 0
        else:
            b = a + 1
        print(b)
    except BaseException as e:
        print(e)
    
    

    上面代码将输出如下内容:

    division by zero

    欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

  • 相关阅读:
    学好VC++的十大良好习惯
    VC6.0调试技巧
    匈牙利命名法
    VC中常用文件操作(三)
    VL_FEAT——图像处理函数库
    MATLAB——linspace
    (Your)((Term)((Project)))(字符串处理)
    Matrix Chain Multiplication(栈的简单应用)
    The Triangle(DP基础)
    MATLAB——polyfit
  • 原文地址:https://www.cnblogs.com/suim1218/p/10344980.html
Copyright © 2011-2022 走看看