Python基础(9)——函数、装饰器、迭代器、生成器、变量作用域

函数

定义函数,使用 def 关键字。

结构:

1
2
3
def 函数名(参数列表...):
语句...
return 返回值...

函数的参数:

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""
装饰器:
1.在定义函数时,将函数名作为参数来传递
2.自定义一个装饰器,(即自定义一个函数),在函数内部去调用真正的函数
3.return 装饰器的自调
"""

def outer(func):
def inner():
print('装饰器....')
func()
print('啦啦啦....')
return inner

@outer # --> func1 = outer(func1)
def func1():
print('1234567')

func1()
"""
输出:
装饰器....
1234567
啦啦啦....
"""

例如 @property@属性名.setter 广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。

迭代器

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:__iter()__next()

字符串,列表或元组对象都可用于创建迭代器。

生成器

yield 函数被称为生成器(generator),生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器, 每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。

变量作用域(LEGB)

L (Local) 局部作用域

E (Enclosing) 嵌套作用域,闭包函数外的函数中

G (Global) 全局作用域

B (Built-in) 内建作用域