• Python 基础(二)


    一、def 函数

    python 提供了函数功能,可以将想要在程序中重复使用的部分功能抽象成一个函数,以方便程序调用,或者提供给其他模块使用

    def function_name(parameters):
        expressions

    python 使用 def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值,在 expressions 中的逻辑代码中用 return 返回

    def function():
        print('This is a function')
        a = 1+2
        print(a)
    
    # 打印
    # This is a function
    # 3
    function()

    1) 函数参数

    在调用函数的时候,参数个数和位置一定要按照函数定义。如果忘记了函数的参数的位置,只知道各个参数的名字,可以在函数调用的过程中,指明特定的参数,这样的话,参数的位置将不受影响

    def func(a, b):
        c = a+b
        print("the c is %d" % c)
    
    # 打印 the c is 3
    func(b = 1, a = 2)

    2) 默认参数

    在定义函数时,有时候有些参数在大部分情况下是相同的,只不过为了提高函数的适用性,提供了一些备选的参数,为了方便函数调用,可以将这些参数设置为默认参数,那么该参数在函数调用过程中可以不需要明确给出

    def function_name(para_1,...,para_n=defau_n,..., para_m=defau_m):
        expressions

    函数声明只需要在默认参数的地方用 = 号给定即可。注意:所有的默认参数都不能出现在非默认参数的前面

    def sale_car(price, color='red', brand='carmy', is_second_hand=True):
        print('price %d  color %s  brand %s  is_second_hand %s' % (price, color, brand, str(is_second_hand)))
    
    # 打印 price 1000  color red  brand carmy  is_second_hand True
    sale_car(1000)

    3) 可变参数

    函数的可变参数是传入的参数(个数)是可以变化的。注意:可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数

    def report(name, *grades):
        total_grade = 0
        for grade in grades:
            total_grade += grade
        print('%s total grade is %d' % (name, total_grade))
    
    # 打印 Mike total grade is 17
    report('Mike', 8, 9)

    4) 关键字参数

    关键字参数可以传入 0 个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict)

    def portrait(name, **kw):
        print('name is %s' % name)
        for k,v in kw.items():
            print('%s  %s' % (k, str(v)))
    # 打印
    # name is Mike
    # country  China
    # age  24
    # education  bachelor
    portrait('Mike', age=24, country='China', education='bachelor')

     5) 自调用

    如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试代码,但是该脚本作为一个模块对外提供功能的时候,单元测试代码也会执行,这些往往是我们不想要的,可以把这些代码放在脚本最后。在执行该脚本的时候,if 判断语句将会是 True,此时其内部的代码将会执行;如果外部调用该脚本,if 判断语句则为 False,其内部的代码将不会执行

    if __name__ == '__main__':
        #code_here

     二、class 类

    class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如 Calculator。 class 可以先定义自己的属性(如: name = 'Good Calculator'),class 后面还可以跟 def,定义一个函数(如: def add(self, x, y))。注意:这里的self 是默认值

    class Calculator:
        name = 'Good Calculator'
        price = 18
        def add(self, x, y):
            print(self.name)
            result = x + y
            print(result)
        def minus(self, x, y):
            result = x - y
            print(result)
        def times(self, x, y):
            print(x * y)
        def divide(self, x, y):
            print(x / y)
    
    cal = Calculator()
    cal.name
    cal.add(8, 10)

     __init__可以理解成初始化class的变量。注意:这里是双下划线

    class Calculator:
        name = 'good calculator'
        price = 18
        def __init__(self, name, price, height = 10, width = 14, weight = 16):
            self.name = name
            self.price = price
            self.h = height
            self.wi = width
            self.we = weight
    
    cal = Calculator('bad calculator',18,17,16,15)
    print(c.name)
    print(c.wi)

     三、input

    variable = input() 表示运行后,可以在屏幕中输入一个数字,该数字会赋值给自变量。注意:输入的只能是数字(整型或浮点型),输入字符串会报错

    variable1 = input('please input a number')
    variable2 = int(input('please input a number'))

    四、Tuple 元组

    用小括号或者无括号来表述,是一连串有顺序的数字

    # 这两种方式都是正确的
    tuple1 = (12, 3, 5, 15, 6)
    tuple2 = 12, 3, 5, 15, 6
    
    # 输出各个元素的两种方式
    for content in tuple1:
        print(content)
    for index in range(len(tuple2)):
        print('index = %d, number in tuple = %s' % (index, str(tuple2[index])))

    五、List 列表

    用中括号来表述,是一系列有序的数列。除了可以像元组那样拿到各个元素之外,还有一系列自带的功能

    1) 添加

    a = [1, 2, 3, 4, 1, 1, -1]
    a.append(0) # 在a的最后面追加一个0
    a.insert(1, 0) # 在位置1处添加0

    2) 移除

    a.remove(2) # 删除列表中第一个出现的值为2的项

    3) 显示特定位

    print(a[0])  # 显示列表a的第0位的值
    print(a[-1]) # 显示列表a的最末位的值
    print(a[0:3]) # 显示列表a的从第0位 到 第2位(第3位之前) 的所有项的值
    print(a[5:])  # 显示列表a的第5位及以后的所有项的值
    print(a[-3:]) # 显示列表a的倒数第3位及以后的所有项的值

    4) 打印列表中的某个值的索引

    print(a.index(2)) # 显示列表a中第一次出现的值为2的项的索引

    5) 统计列表中某个值出现的次数

    print(a.count(-1))

    6) 排序

    a.sort() # 默认从小到大排序
    a.sort(reverse = True) # 从大到小排序

    7) 多维列表

    multi_dim_a = [[1, 2, 3], [2, 3, 4], [3, 4, 5]] # 三行三列

     六、字典

    如果说 List 是有顺序地输入输出的话,那么字典的存档形式则是无需顺序的。

    在字典中,有 key 和 value 两种元素,每一个 key 对应一个 value,key 是名字,value 是内容。数字和字符串都可以当作 key 或者 value,在同一个字典中,并不需要所有的 key 或 value 有相同的形式。List 可以看成是一种 key 为有序数列的字典

    字典还可以以更多样的形式出现,例如:字典的元素可以是一个 List,或者再是一个列表,再或者是一个 function。索引需要的项目时,只需要正确指定对应的 key 就可以了

    d1 = {'apple':1, 'pear':2, 'orange':3}
    d2 = {1:'a', 'b':2, 'c':3}
    d3 = {'apple':[1, 2, 3], 'pear':{1:3, 3:'a'}, 'orange':func}
    print(d1['apple'])  # 1
    print(d2['b'])  # 2
    print(d2[1])  # a
    print(d3['pear'][3])    # a
    del d1['pear']

    七、import 模块

    import time # import time 模块
    print(time.localtime())
    
    import time as t # t 可以自己定义
    print(t.localtime())
    
    from time import time, localtime # 只 import 自己想要的功能
    print(localtime())
    print(time())
    
    from time import * # 输入模块的所有功能
    print(localtime())

     八、读写文件

    使用 open 能够打开一个文件,open 的第一个参数为文件名和路径 ‘my file.txt’,第二个参数为将要以什么方式打开它

    text = 'This is my first test. 
    This is the second line. 
    This the third '
    my_file = open('my file.txt', 'w')
    my_file.write(text)
    my_file.close()  

    给文件添加内容,打开类型为 a,表示 append

    append_text = '
    This is appended file.'
    my_file = open('my file.txt','a')
    my_file.write(append_text)
    my_file.close()

    读取文件内容

    file = open('my file.txt','r') 
    content = file.read() # 读取文本的所有内容
    content = file.readline()  # 读取第一行
    second_read_time = file.readline()  # 第二次使用时读取第二行
    content = file.readlines() # 读取所有行并以 list 方式储存
    print(content)
  • 相关阅读:
    luarocks argparse
    Shell中for循环的几个常用写法
    linux
    Docker修改镜像源为阿里云
    ntpdate更新服务器时间失败
    linux文本三剑客之 sed
    [Union]C++中Union学习笔记
    [sublime] 利用sublime搭建C/C++编译器
    [wordpress]WordPress地址(URL)错误,修改解决方案
    [wordpress]更新插件时,免去FTP操作
  • 原文地址:https://www.cnblogs.com/zerotoinfinity/p/12802811.html
Copyright © 2020-2023  润新知