不可变数据类型:数字,字符串,元组
可变数据类型:列表,字典
集合有去重特点,分为可变集合,不可变集合。
函数:def 关键字开头
在python函数中,
①默认return会返回none
②如果return多个对象,那python会将多个对象封装成一个元组返回
③函数在执行过程中遇到return语句,就会停止执行并返回结果
函数的作用域:LEGB(只有模块,类,函数才能引入作用域)
- L local 嵌套作用域
- E enclosing 局部作用域
- G global 全局作用域
- B builtin
关键字 global,nonlocal作用:
# count = 10
# def outer ():
# global count#global加入声明可避免报错
# print(count)
# count = 5
#
# outer()
x=int(2.9)#built.in
g_count=0#global
def outer ():
count = 10#enclosing
def inner():
nonlocal count#关键字nonlocal在函数嵌套中声明全局变量
count = 2#local
print(count)
inner()
outer()
递归函数:
递归函数两个特点:①自己调用自己 ②提供结束条件
阶乘函数
def fact(n):
if n == 1:
return 1
return n*fact(n-1)
print(fact(3))
注意点:一般递归可以写的,循环都可以解决,但递归的效率不高
函数参数:
默认参数
def print_info(name,age,sex='female'):
print('Name: %s'%name)
print('Age: %d' %age)
print('Sex: %s' %sex)
print_info('zang',44)
print_info('xu',2)
关于不定常参数位置:args放左边,kwargs放右边,例如ef print_info(*args,**kwargs),如果有默认参数,放左边
#low加法器
# def add(x,y):
# print(x+y)
# add(2,3)
#高大上加法器
# def add(*args):#:*把不定常参数组成元组
#
# sum=0
# for i in args:
# sum+=i
# print(sum)
# add(1,2,3,4,5)#组成了元组
# def print_info(**kwargs):#:**把不定常参数组成键值对
# print(kwargs)
# for i in kwargs:
# print('%s:%s'%(i,kwargs[i]))
# print_info(job='IT',hobby='girl',height=199)
传入字典参数,加两个星号
# def f(**kwargs):
# print(kwargs)
#
# f(**{'name':'alex'})#传入字典参数,加两个星号
高阶函数:
1.函数名可以进行赋值
2.函数名可以作为函数参数,还可以作为函数的返回值(满足任一都称为高阶函数)
def f(n):
return n*n
def foo(a,b,func):
ret = func(a) + func(b)
return ret
print(foo(1,2,f))