Python基础(9)——函数、装饰器、迭代器、生成器、变量作用域
函数
定义函数,使用 def
关键字。
结构:
1 | def 函数名(参数列表...): |
函数的参数:
1、不定长参数: *args
2、关键字参数:**kwargs
匿名函数: 关键字 lambda eg:qm = lambda x: x ** x
偏函数: 导入模块 import functools
functools.partical()就是创建一个新的函数,不需要自行定义函数,直接将结果赋值给一个变量,而这个变量就是一个函数。这个函数的目的是将默认参数给固定住。
回调函数:定义函数时,将函数名作为参数传递过来,然后在函数里边再次调用函数。
常用函数:
abs()
: 返回数字的绝对值max()
: 返回给定参数中的最大值min()
:返回给定参数中最小的值pow()
: 求幂(求次方) [求3^4
—> print(3**4)
、 print(pow(3, 4))
]round()
:四舍五入,如果只有一个参数,默认不保留小数点.参数二: 小数点后保留的位数
import math
math.ceil()
:向上取整math.floor()
:向下取整math.sqrt()
:求开方math.modf()
:返回参数的整数部分和小数部分
import random
random.choice()
:返回列表,元祖,字典中的某一个值random.choices()
:返回列表,元祖,字典中的指定个数值个值 k 关键字参数random.random()
:返回0-1之间的数, [0, 1)random.uniform()
:返回指定的一个区间范围的随机数 [, )random.randint()
:返回指定区间范围的随机整数 [, ]random.shuffle()
:将列表中的数据进行打乱排序
import time
time.localtime()
获取本地时间time.asctime()
/ time.ctime()
将时间转换成用户可读时间, 返回str格式 (Thu Apr 19 23:02:35 2018)time.strftime('%Y-%m-%d %X')
字符串的格式化输出, 返回str格式 (2018-04-19 23:07:51)time.strptime(timeObject, '%Y-%m-%d %X')
将字符串的时间格式转换成元祖类型的时间格式
import datetime
datetime.datetime.now()
获取当前时间datetime.datetime(2020, 2, 2, 20, 20, 20)
获取指定的时间date1.strftime('%Y-%m-%d %X')
时间字符串的格式化输出, 返回str格式
import calendar
calendar.month(2018, 4)
获取指定的月份日历calendar.calendar(2018)
获取指定的年份日历
装饰器
本质还是函数(闭包函数), 一般使用装饰器来装饰其他函数。本身还是函数的调用。
1 | """ |
例如 @property
、@属性名.setter
广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
迭代器
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:__iter()__
和 next()
。
字符串,列表或元组对象都可用于创建迭代器。
生成器
yield
函数被称为生成器(generator),生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器, 每次遇到 yield
时函数会暂停并保存当前所有的运行信息,返回 yield
的值, 并在下一次执行 next()
方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。
变量作用域(LEGB)
L (Local) 局部作用域
E (Enclosing) 嵌套作用域,闭包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内建作用域