第六天递归、匿名函数、推导式、变量存储、模块
admin
2023-07-23 12:42:40
0次

全局变量:生存周期,整个文件;函数内部、外部都能使,在函数前面后面定义都ok
def fun():
print(a+10)
a = 10
fun()

全局变量和局部变量同名:新开辟空间了,并不是重新赋值
a = 10
print(id(a))
def fun():
a = 20
print(id(a))
fun()

global 在函数内部声明使用的是全局变量,尽可能放上面
下面代码报错了、

a = 10
print(id(a))
def fun():
a = 20
print("内20",id(a))
global a
a = 15
print("内15",id(a))
fun()
print(a)
print(id(a))
global b

函数内使用全局变量,如果不用global声明,则只能使用,不能修改;声明过之后才能修改

匿名函数:只能做简单的事,就是个表达式
匿名函数格式:
1、函数名字 = lambda 形参1, 形参2, 形参 ... : 返回值
函数名字(实参1, 实参2, 实参...)
2、实参 = ( lambda 形参1, 形参2, 形参... : 返回值 ) (实参1, 实参2, 实参...)

写法1:
fun = lambda num1, num2 : num1 + num2
print( fun(num = 1, num= 2))
写法2:
ret_val = (lambda num1,num2: num1 + num2) (3,4)
print(ret_val)
递归关键:1、找递归的公式 例:4*(n-1)!
2、找递归的出口
3、自己调用自己

def step (形参):
#递归出口:
if n == 1:
return 1
else:
骚操作
return 公式( 骚操作 运算符 step(对形参的骚操作))
调用step()

for推导式:把for后变量放for()里循环,然后每次循环得到for前变量,再把for前变量放列表里
关键:for 前的是放列表的,for 后的是放循环体里的,for外的[] 不要丢
例 把x 放到列表里循环100次,把i 放到range()里循环100次
lists = [ x for i in range(1,101)]

for if 推导式: for 的后循环要满足 if 条件才能得到for 前变量

注:for 前 for 后可以是同一变量
for 后与列表无关可以用来代替
lists = ["*" for
in range(8)]
lists = [2 * i for i in range(1,9)]
lists = [ x for i in range(1,101) if x % 2 ==0]
lists = [ i for i in range(1,101) if i % 2 ==0]
lists = [ i*2 for i in range(1,11) if i % 2 ==0]
混合使用
例:
print((lambda
a:[i**2 for i in a])(2,3,4))

引用
a引用该空间数据

a = 1000
print(id(a))
a = 10 100
print(id(a))
b = 10
print(id(b))
b = 10
10
print(id(b))

a开了俩空间,b开了一个空间
python缓存池:放地址 将-5~256之间的数的地址放入缓存池,用了在取出

str1 = "hellopython"
print(id(str1))
str2 = "hello"+"python"
print(id(str2))
str1 = "hellopythonhello×××"
print(id(str1))
str2 = "hellopython"+"hellopython"
print(id(str2))

python缓存池:放地址 将0~20个字符之间的字符的地址放入缓存池,用了在取出

lists = [10,20,30]
print(id(lists))
lists.append(40)
print(id(lists))
dicts = {"names":"张三"}
print(id(dicts))
dicts["age"] = 18
print(id(dicts))

列表、字典没有缓存池,列表、字典不管怎么加,用append/remove等,地址都一样,不会新开辟;但是,切片和a = [1,2,3],b = [1,2,3] 是新开辟,可用 is 判断,if a is b,就没新开辟,如果不是,就新开辟了

可变类型:该类型可以在存储空间修改内容
不可变类型:该类型不可以在存储空间修改内容
不可变:int、str、float、tuple

模块:任意.py文件,要求放同一目录下,不然不好使,讲包之后就好使了。别起中文
使用方法:import 文件名(模块名,不加.py)
模块名.函数名
相当于把另外文件所有都拷过来

while True 无限循环,不叫死循环,二者区别:一个故意设的,一个是写错了

while 5 也ok,相当于while bool(5),也是True

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...