网站运维推广怎么做,个人社保缴费凭证,seo黑帽教程视频,南充市房地产备案查询深浅拷贝#xff1a;.copy()方法#xff0c;浅拷贝值拷贝一层。列表中的列表和字典会深拷贝#xff0c;其他类型会浅拷贝。列表中的列表和字典会随着副本的修改而改变#xff0c;其他类型不会随着副本的改变为改变。ab不是复制#xff0c;是两个变量共享同一内存空间…深浅拷贝.copy()方法浅拷贝值拷贝一层。列表中的列表和字典会深拷贝其他类型会浅拷贝。列表中的列表和字典会随着副本的修改而改变其他类型不会随着副本的改变为改变。ab不是复制是两个变量共享同一内存空间一个改变另一个也改变。a[[1,2],3,4] bcopy.copy(a)浅拷贝ccopy.deepcopy(a)深拷贝 集合重点作用把不同的元素集合在一起,去除重复的内容是无序的集合里的元素是可哈希的。set是可变集合本身是非可哈希的不能作为字典的键frozenset不可变集合。 集合创建sset(alex li) 访问集合由于集合本身是无序的所以不能为集合创建索引或切片操作只能循环遍历或使用in、not in来访问或判断集合元素。for i in s: print(i) 集合操作s.adduu添加一个元素s.updateops当成多个元素添加s.remove删除元素s.pop随机删除s.clear清空集合del s删除集合 集合操作符intersection交集 {}union并集 {|}difference差集 {-}symmetric_difference对称差集反向交集 {^}a.issupersetbab 父集a.issubsetbab 子集 函数作用减少重复代码方便修改更易扩展保持代码一致性 函数创建define定义def 函数名称 函数代码 函数命名规则--函数名必须以下划线或字母开头可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号--函数名是区分大小写的。--函数名不能是保留字。 函数调用一定要加括号。 函数参数----必需的参数 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。def f(name,age): print(I am %s,I am %d%(name,age))f(alex,18)f(alvin,16) ----关键字参数 关键字参数和函数调用关系紧密函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致因为 Python 解释器能够用参数名匹配参数值。def f(name,age): print(I am %s,I am %d%(name,age))# f(16,alvin) #报错f(age16,namealvin) ----缺省参数默认参数默认参数要跟在其他参数后面 调用函数时缺省参数的值如果没有传入则被认为是默认值。下例会打印默认的age如果age没有被传入def print_info(name,age,sexmale): print(Name:%s%name) print(age:%s%age) print(Sex:%s%sex) returnprint_info(alex,18)print_info(铁锤,40,female) ----不定长参数 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数和上述2种参数不同声明时不会命名。加了星号*的变量名会存放所有未命名的变量参数。而加(**)的变量名会存放命名的变量参数 不定长参数的位置*args无命名参数要放在命名参数的左边**kargs参数放在右边默认参数放最左边 def print_info(*args,**kwargs): print(args) #for i in kwargs: # print(%s:%s%(i,kwargs[i])) print(kwargs) for i in kwargs: print(%s:%s%(i,kwargs[i])) print_info(j,hj,[1,2,3],namealex,age12,jobit,hobbygrils) 函数返回值 return None:默认return作用结束函数返回某个对象注意函数没有写return默认返回None如果return多个对象那么会把多个对象封装成一个元祖返回。 作用域重要Llocal Eenclosing Gglobal Bbuilt_in局部作用域不能修改全局作用域。count10def outer(): print(count) count5会出错 局部变量要修改全局变量要加关键字globalcount10def outer(): global count print(count) count5 print(count) local作用域要想修改enclosing作用域必须加上nonlocal countdef outer(): count10 def inner(): nonlocal count count20 print(count) inner() print(count)outer() LEGBx int(2.9) # int built-ing_count 0 # globaldef outer(): o_count 1 # enclosing def inner(): i_count 2 # local print(o_count) # print(i_count) 找不到 inner() outer()# print(o_count) #找不到小结1、变量查找顺序LEGB作用域局部外层作用域当前模块中的作用域Python内置作用域2、只有模块、类及函数才能引入新的作用域3、对于一个变量内部作用域先声明就会覆盖外部变量不声明直接使用就会使用外部作用域的变量4、内部作用域要修改外部作用域变量时全局变量要使用global关键字嵌套作用域变量要使用nonlocal关键字nonlocal是Python3新增的关键字有了这个关键字就能完美的实现闭包了 高阶函数函数名可以进行赋值函数名可以作为参数还可以函数的返回值def f(n): return n*nprint(f(4)) def foo(a,b,func): return func(a)func(b) print(foo(1,2,f))结果5def f(): print(ok) def bar(a,b,func): func() return 1print(bar(1,2,f))结果ok1def foo3(): def inner(): return 8 return inner foo3()print(foo3())#返回inner的内存地址print(foo3()())#返回8 递归函数特点调用自身函数有一个结束条件能用递归写的程序循环都可以解决递归效率在很多时候非常低不推荐使用 阶乘def f(n): if n1: return 1 return n*f(n-1)print(f(4)) 斐波那契数列 def fibo(n): before0 after1 for i in range(n-1): retbeforeafter beforeafter afterret return retprint(fibo(3))#**************递归*********************def fibo_new(n):#n可以为零数列有0 if n 1: return n return(fibo_new(n-1) fibo_new(n-2))print(fibo_new(3))print(fibo_new(30000))#maximum recursion depth exceeded in comparison 内置函数 1filter:过滤器掉相同的字符str[a,b,c,d]def fun1(s): if s!a: return sretfilter(fun1,str)print(ret) #filter object at 0x000001A0AF55B940print(list(ret)) #[b,c,d]结果为迭代器过滤器对象 2map:str [d,a, b]def fun2(s): return s alvinret map(fun2, str)print(ret) #map object at 0x000001D4F52972B0 map object迭代器print(list(ret)) #[dalvin, aalvin, balvin] 3reduce:叠加from functools import reduce #Python3使用reduce要加这句话def add1(x,y): return x yprint (reduce(add1, range(1, 10)))## 4950 注12...99print (reduce(add1, range(1, 101), 20)) #阶乘def mul(x,y): return x*yprint(reduce(mul,range(1,10))) 4lambdadef add(a,b): return a bprint add(2,3) #匿名函数add lambda a,b : a bprint(add(2,3)) 转载于:https://www.cnblogs.com/cxli99/p/8448535.html