目录
1.name属性值,一般情况下, 都需要将模块内的调试代码置于该条件下, 以防止被其他模块导入后, 调试代码也参与执行
# 通常写完代码底部会加上这个 if __name__ == '__main__'if __name__ == '__main__':# 当写了if __name__ == '__main__'下面的都不会被调用 只调用上面的 pass
#name==main 为真(Tuer) name==其它数 为假(floas)
2.变量的进阶局部变量和全局变量:
2.1局部变量:
2.2全局变量:是在函数外部定义的变量, 所有函数内部都可以使用
3.1缺省参数:定义函数时,给某个参数指定一个默认值,具有默认值的参数
3.2多值参数:如果一个函数能够处理的参数个数是不确定的, 可以考虑使用多值参数
4.元组拆包的方式:在元组变量前,增加一个 *
5.匿名函数:
1.name属性值,一般情况下, 都需要将模块内的调试代码置于该条件下, 以防止被其他模块导入后, 调试代码也参与执行
# 通常写完代码底部会加上这个 if __name__ == '__main__'
if __name__ == '__main__':
# 当写了if __name__ == '__main__'下面的都不会被调用 只调用上面的
pass
#name==main 为真(Tuer) name==其它数 为假(floas)
# 通常写完代码底部会加上这个 if __name__ == '__main__'
if __name__ == '__main__':
# 当写了if __name__ == '__main__'下面的都不会被调用 只调用上面的
pass
#name==main 为真(Tuer) name==其它数 为假(floas)
2.变量的进阶局部变量和全局变量:
2.1局部变量: • 局部变量是在函数内部定义的变量, 只能在函数内部使用 • 函数执行结束后, 局部变量会被系统回收 • 不同的函数, 可以定义相同的名字的局部变量, 彼此之间 不会产生影响
# 函数的定义封装~~~~~~~~~
# def 函数名():
# 函数封装的代码。。。。。
#函数内部定义叫局部变量!!!!!!!!!!!
def login_front():
user='admin'
pwd='123456'
print(user,pwd)
return pwd
if __name__ == '__main__':
print(login_front())
#局部变量用一次就会呗释放 不存在这个数字
# 引用是 变量中来存储数据的地址
2.2全局变量:是在函数外部定义的变量, 所有函数内部都可以使用
函数中变量获取顺序:
1. 首先查找函数内部是否存在指定名称的局部变量, 如 果有直接使用 2. 内部如果没有, 则查找函数外部是否存在指定名称的 全局变量, 如果有直接使用 3. 如果还没有, 则程序报错# 函数外部定义,是全局变量!!!!!!!
#定义一个全局变量
g_num='牛逼'
#在函数中使用全局变量 1.可以在任意位置只用全局变量
def func():
print(g_num)
#局部变量用一次就会被释放 不存在这个数字
def func1():
g_num='牛马' #局部变量和全局变量同名 就近使用 会先使用局部变量
print(g_num)
# #在函数中定义全局变量!!!!!!!
# 全局变量不会存在被释放!!!!! 在任意位置都可以使用
def func2():
global num #(global从局部修改全局变量的修改关键字)
num=40
print(num)
if __name__ == '__main__':
func1()
func2()
print(g_num)
3.1缺省参数:定义函数时,给某个参数指定一个默认值,具有默认值的参数
说明
:
•
调用函数时,如果没有传入缺省参数的
值,则使用默认值
•
将常见的值设置为参数的缺省值,从而
简化函数的调用
# 缺省参数 不传入值 就会使用默认值
# 需求,讲age和sex变为缺省参数,age的默认值为18,sex默认值为保密
def stu_info(name='牛马',age=18,sex='保密'): #缺省参数(形参输入默认的值) 必须是在最后面
print(f'name={name},age={age},sex={sex}')
stu_info() #实参不输入数据值就会默认形参给的数据值
def stu_info(age,name='牛马',sex='保密'): #缺省参数(形参输入默认的值) 必须是在最后面
print(f'name={name},age={age},sex={sex}')
stu_info(18)
def stu_info(age,name='牛马',sex='保密'): #缺省参数(形参输入默认的值) 必须是在最后面
print(f'name={name},age={age},sex={sex}')
stu_info(18,'小小牛马','男') #在实参输入数据值就会显示输入的值,不会显示默认值
3.2多值参数:如果一个函数能够处理的参数个数是不确定的, 可以考虑使用多值参数
# 需求1.定义一个函数 sum ,可以接受的 任意多个整数
# 2.功能要求:将传递的 所有数字累加,并返回累加结果
def sum(*z): #以前是用range(来实现n+1次数) 多值参数可以用*args后面跟普通参数
print(type(z),z)
n=0
for i in z:
n+=i
return n
print(sum(3,5,1))
print('_'*50)
def func1(a,*args,sex='男',**nm): #参数顺序是不能弄反的 (**nm)两个星号会出现字典形式, 有键有值
print(a)
print(args)
print(sex)
print(nm)
#调用函数只传位置参数!!!!!!!!
func1(1) #后面两个默认
print('*'*50)
# 调用函数传入位置参数和多值参数!!!!
func1(1,2,3,4,5) #最后一个是默认
print('+'*50)
# 调用函数输入 位置函数,多值函数,默认函数!!!!!!!!
func1(1,2,3,4,5,sex='小牛马')
#range n+1求合方式!!!!! 跟参数无关
# def sum1():
# a=0
# for i in range(a+1):
# a+=i
#
# print(a)
# return a
# print(sum1())
4.元组拆包的方式:在元组变量前,增加一个 *
def sum(**z): #定义函数*星号叫组包 #以前是用range(来实现n+1次数) 多省参数可以用*args后面跟普通参数
print(type(z),z)
# n=0
# for i in z:
# n+=i
# return n
return my_001
my_list=[1,3,5]
my_tuple=(2,4,6)
my_001={'name':'11','age':'11'}
#方法:使用(*)后面跟(拆开的包名)对元组或者列表进行拆包!!!!!
print(sum(**my_001)) #调用函数*星号叫拆包!!!!!!!!!
print('*'*50) #这是隔离符
def nb(a,b,c):
print(a)
print(b)
print(c)
print(nb(*my_tuple)) #调用函数*星号叫拆包!!!!!!!
5.匿名函数:
用 lambda 关键字创建的简化型函数, 不同于使用 def 声明的函数, 匿名
函数没有函数名称
l
匿名函数能接收任何数量的参数, 但只能返回一个表达式的值
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print("result=", sum(10, 20)) # result= 30
print("result=", sum(20, 20)) # result= 40
# 需求1.定义一个函数 sum ,可以接受的 任意多个整数
# 2.功能要求:将传递的 所有数字累加,并返回累加结果
def sum(*z): #以前是用range(来实现n+1次数) 多值参数可以用*args后面跟普通参数
print(type(z),z)
n=0
for i in z:
n+=i
return n
print(sum(3,5,1))
print('_'*50)
def func1(a,*args,sex='男',**nm): #参数顺序是不能弄反的 (**nm)两个星号会出现字典形式, 有键有值
print(a)
print(args)
print(sex)
print(nm)
#调用函数只传位置参数!!!!!!!!
func1(1) #后面两个默认
print('*'*50)
# 调用函数传入位置参数和多值参数!!!!
func1(1,2,3,4,5) #最后一个是默认
print('+'*50)
# 调用函数输入 位置函数,多值函数,默认函数!!!!!!!!
func1(1,2,3,4,5,sex='小牛马')
#range n+1求合方式!!!!! 跟参数无关
# def sum1():
# a=0
# for i in range(a+1):
# a+=i
#
# print(a)
# return a
# print(sum1())



