期末笔记后期整理,如有问题,请多多指教。
1、函数的格式:
def 函数名(参数列表):
#...
return 表达式 #不带return相当于返回None
2、函数的参数
#1.
def add(a,b):
print(a+b)
add(11,22)
#2.默认参数(位于参数列表末尾)
def pinfo(name,age=35):
print(name)
print(age)
pinfo(name="aa")
pinfo(name="aa",age=19)
#3.不定长参数
def 函数名([formal_args,]*args,**kwargs):
#...
return 表达式
a.传入的参数与formal_args个数相同,不定长参数会返回空的元组或字典;
b.参数多且没有指定名称,*args以元组形式存放多余参数;
c.参数多且指定名称,如m=1,**kwargs以字典形式存放多余参数。
①def test(位置参数,默认,不定长)
②若参数是可变序列,原地址增删改查发生变化,实参也变,但一般不会变。
3、函数的返回值(多条return,返回第一条)
def func():
return 1,2
a,b=func()
print(a,b)
实际运用中一般常用有参数、有返回值的函数
注意函数的嵌套调用
4、变量作用域
1.LEGB原则:局部变量和参数;闭包函数的外层函数;全局;内建。
2.全局变量和局部变量(全局变量不可修改)
3.global关键字(修改全局变量)
a=100
def test():
global a
a+=100
print(a)
test()
特例: r=[1]
r[0]=r[0]+1 #列表本身自带的方法也可修改,可不用global关键字
4.nonlocal关键字(修改嵌套作用域中的变量)
def func():
count=1
def func_in():
nonlocal count
count=2
func_in()
print(count)
func()
global修饰的变量之前可不存在,nonlocal修饰的之前必须存在。
递归函数(注意结束标志)
5、匿名函数(没有名称的函数)
lambda 参数列表:表达式
#举例:
add=lambda a,b:a+b
print(add(10,20)) #只能返回一个表达式的值,不能直接用print,匿名函数不能共享
6、日期时间函数
时间函数:
①时间戳(1970.1.1 0点开始按秒计算偏移量)
time().clock()
import time
print(time.time())
②格式化的时间字符串
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
日期格式化符号:%a #星期的英文单词的缩写:如星期一, 则返回 Mon
%b #月份的英文单词的缩写:如一月, 则返回 Jan ...
时间元组(struct_time):用一个元组装起来的9组数字处理时间
如:tm_year #四位数年
tm_mon #月(1-12)...
time模块函数:time.clock(),time.sleep(secs)...
日历函数:
import calendar
print(calendar.month(2019,12))
常用函数:calendar.isleap(year)...
7、随机数函数(random模块)
1.random.random()#返回0与1之间的随机浮点数[0,1.0)
2.random.uniform(a,b)#返回a与b之间的随机浮点数[a,b]
a<=N<=b或b<=N<=a
3.random.randint(a,b)#返回一个随机整数[a,b],且a的值一定小于b的值
4.random.randrange([start],stop[,step])#返回指定递增基数集合中的一个随机数,且参数必须是整数
5.random.choice(sequence)#从sequence(可以是列表、元组或字符串)中返回一个随机元素,若sequence为空,则IndexError异常
6.random.shuffle(x[,random])#打乱顺序(洗牌)
7.random.sample(sequence,k)#从指定序列中随机获取k个元素组成新子序列返回,不会修改原有序列