第六天递归、匿名函数、推导式、变量存储、模块
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

相关内容

热门资讯

鲁比奥:美伊本月底将继续技术磋... △鲁比奥(资料图)24日多方消息显示,美国国务卿鲁比奥表示,美国和伊朗技术团队将于6月底在瑞士继续举...
芯联集成200亿项目落地:12... 快科技6月24日消息,芯联集成近日发布对外投资进展公告,公司与芯联先进集成电路制造(绍兴)有限公司(...
刷新海洋机器人融资纪录后,他以... 来源:滚动播报 (来源:上观新闻) 依托长三角科创产业沃土,国内海洋智能装备赛道跑出新锐力量。今天...
2026年省管企业“科技创新与... 为进一步提升国资国企科技创新管理水平,推动企业规范开展科技创新活动,强化实践运用能力,切实以高质量创...
智平方郭彦东:机器人大脑不应只... “下一代机器人大脑不应只是算力和数据的竞赛。” 6月23日,具身智能机器人公司智平方创始人兼CEO郭...
在上海图书馆,翻开5G-A与一... 今年以来,我们能切身感受到AI正在全面加速,融入身边的工作与生活。全面养虾、AI视频席卷网络、一人公...
原创 诺... 最近科技圈的热闹,一半是苹果折叠屏的消息闹的,另一半,则是那个几乎被我们遗忘的名字——诺基亚。就在大...
苹果首款折叠iPhone屏幕供... 来源:环球网 【环球网科技综合报道】6月24日消息,据Wccftech报道,市场供应链相关信息显示,...
宇树背后的供应链赌局:不怕错,... 当机器人跳舞时,谁在给它“供血”? 作者|张麟 编辑|栗子 2023年,中国厦门,一颗规格为217...
原创 天... 大家好,这里是史记文谭,闲中着色,笑里有情,不废观星问月,亦赏市井浮生。 前言 宇宙的边界,正在逃离...