3.15学习笔记
复习
#1.格式字符串
1)格式占位符的字符串%(数据1,数据2,…)
%s、%d、%.Nf
2)f-string
f’{数据}’
f’{数据:参数}’
参数1::字符>N、:字符<N
参数2::
num = 23.34
str 1 = f’abc:{num},\{\}
‘
str2 = ’abc:%s{}’ % num
print(str2)
print(f’abc:{23.34:<*7}’)
print(f’abc:{num:.2%}’)
print(f’abc:{10000191020:,}’)
#2.函数
1)概念
函数是实现某一特定功能的代码段
2)定义函数(造机器)
def 函数名(形参列表)
说明文档
函数体
特别重要:定义函数时不会执行函数体,调用时才执行
3)调用函数
函数名(实参列表)
调用过程
新的知识
一、
重点:位置参数和关键字参数,参数默认值
一般:参数类型说明和带*的不定长
1.位置参数和关键字参数—根据函数调用的时候实参的传递方式分类
1)位置参数—让实参和形参在位置上一一对应
2)关键字参数—调用的时候在实参前加‘形参名=’的结构
3)位置参数和关键参数可以一起用:位置参数必须在关键参数之前
def func1(a,b,c):
print(f ‘a:{a},b:{b},c{c}’)
#位置参数
func1(10,20,30) #a:10,b:20,c:30
#关键参数
func1(a=100,b=200,c=300) #a:100,b:200,c:300
#一起用的情况
func1(100,c=300,b=200 )
#func1(a=100,b=200,300)
#func1(100,a=200,c=200 ) 传参必须保证每个参数都有值;
2.参数默认值—形参
定义函数的时候可以直接给形参赋值,这样的参数就是有默认值的参数
再调用有默认值参数的函数时候,有默认值的参数可以不用传参
注意:如果有的参数有默认值,有的参数没有默认值,那么没有默认值的参数必须在有默认值参数的前面
def func2(a=1,b=2,c=3 ):
#a=10
print(print(f ‘a:{a},b:{b},c{c}’)
func2(10,20,30)
func2(10,20)
func2()
def func3(a,b,c=3 ):
print(print(f ‘a:{a},b:{b},c{c}’)
3.参数类型说明
方法一:在没有默认值的形参后面加:‘:类型名’
def func4(a:list,b,c ):
print(print(f ‘a:{a},b:{b},c{c}’)
def func4(a:list,b:int,c):
print(print(f ‘a:{a},b:{b},c{c}’)
方法二:形参默认值的类型就是对应的参数类型
def func4(a:list,b:int,c=‘ ’):
print(print(f ‘a:{a},b:{b},c{c}’)
4.不定长参数—定义函数时参数个数不确定
1)带*的不定长参数—在形参前加 *,那么形参就是一个不定长参数,可以同时接受多个实参
不定长参数本质就是元组,多对应的多个参数
注意:
a.不定长参数对应的形参调用的时候不许用位置参数赋值
#定义一个函数求多个数的和
def sum1(*nums):
print(sum(nums))
sum() #()
sum(1) #(1,)
sum(10,20) #(10,20)
情况一:定长在前,*的不定长在后,调用时候必须全部使用位置参数
def student_info(name,*score):
print(name,score)
student_info(‘小明’,200)
student_info(‘小花’,200,23,89)
情况二:*的不定长在前,定长在后,调用时候定长必须使用关键字参数,不定长参数必须使用位置参数
def student_info(*score,name):
print(name,score)
student_info(200,23,89,name=‘小花’)
情况三:*后面的其他参数必须使用关键字参数
二、返回值
1.返回值—将函数内部的数据传递到函数外部
什么时候需要返回值:如果实现函数的功能会产生新的数 ,那么新的数据就需要返回
def sum1(num1:int,num2:int):
s =num1 + num2
print(‘函数:’,s)
sum1(10,20)
print(s)
#函数:30
2.怎么返回数据
1)return关键字后面的值就是函数的返回值—怎么确定函数返回值
2)函数调用表达式的值就是函数的返回值—怎么在函数外面获得函数返回值
3.return关键字
1)return只能在函数体中使用
2)return用来将数据从函数的内部传递到函数的外部,return后面的值就是函数的返回
return可以直接结束函数—在执行函数体时,如果遇到return函数直接结束
4.返回值的使用
使用函数表达式的值就是使用函数的返回值
1)可以直接打印
2)可以使用函数调用表达式
三、函数变量
根据变量作用域的不同,将变量分为全局变量和局部变量
1.全局变量
没有定义在函数和类中的变量都是全局变量,全局变量从定义开始到整个程序结束(文件结束)的任何地方都可以用
#a是全局变量
a =10
2.局部变量
python中定义在函数中的变量就是局部,局部变量的定义域是从定义开始到函数结束。
def func3():
m = 10
n = ‘abc’
print(f ‘函数中m、n:{m},{n}’)
形参也是局部变量
总结:当调用函数的时候系统会自动为调用的函数开辟一个临时的栈区间,用来保存在函数中定义变量
当函数调用结束,这个函数对应的栈区键会自动释放,里面的数据会全部销毁,销毁之前会先将返回值返回
3.global
作用:
1)在函数中修改全局变量的值
2)在函数中定义全局变量
age = 18
name =‘小明’
def update():
age = 20 #不会修改全局变量的值,而是定义一个新的局部变量age
print(f ‘函数里面-年龄:{age}’) #20
update()
print(f ‘函数外面-年龄:{age}’) #18
global name
name =‘小花’
print(‘里面:’,name)
global sex
sex = ‘男’
四、匿名函数
1.什么是匿名函数
匿名函数的本质是函数(匿名函数只能用来定义功能用一句代码就能实现功能的函数)
语法:
函数名 = lambda 形参列表:返回值
相当于:
def 函数名(形参列表):
return 返回值
#写一个匿名函数求两个数的和
sum1 = lambda num1,num2: num1 + num2
print(sum1(10,20))
print(sum1(num1=100,num2=200))
练习:写一个匿名函数,判断指定的年是否为闰年。结果为Ture或者False
is_leap_year = lambda num3: num3%4 ==0 and num3 %100 != 0 or num3%400 ==0