python学习day10
一、参数
1.参数基本知识
- 任意个数
- 任意类型
2.位置传参(调用函数并传入参数)
3.关键字传参(形参的名字可以直接调用)
#关键字传参和位置传参可以混合使用(位置传入的参数>关键字参数在后=总参数个数)
4.默认参数
# a2表示默认参数,可以不传
def (a1,a2=1):
pass
5.万能参数(打散)
5.1.*args
- *args可以接收任意参数,并将参数转换为元组。
- 有*
- 无*
# 可以传递任意参数
# *args
def func1(*args):
print(args)
func1(1,2) #args = (1,2)
func1((1,2,3)) #args = ((1,2,3))
func1(*(1,2,3,4)) #args = (1,2,3,4)
- 只能用位置传参
5.2.**kwargs
- 可以传递任意参数
- 调用函数无**
- 调用参数有**
# **kwargsdef func2(**kwargs):
print(kwargs)
func2(k1=2,k2='wo')def func2(**kwargs):
print(kwargs)
func2(**{'k1': 2, 'k2': 'wo'})
5.3综合应用
# 综合
def fun(*args,**kwargs):
print(args,kwargs)
6.参数相关重点
def fun(a1,a2):
pass
def fun(a1,a2=2):
pass
def fun(*args,**kwargs):
pass
二、作用域
- 一个函数才是一个作用域
- 作用域中查找数据规则:优先在自己的作用域找数据,自己没有就去‘父级‘-->‘父级‘-->直到全局,全局没有就报错。注意:父级作用域中的值到底是什么?
- 子作用域中查找(练习)
- 子作用域中只能找到父级中的值,默认无法重新为父级的变量重新赋值
- 如果非要对全局变量进行赋值,可以使用global(只应用于全局变量改写)
name ='chendian'
def fun():
global name
name ='alex'
fun()
print(name) #输出为alex
- nonlocal对父级变量进行赋值
name ='chendian'
def fun():
# global name
name ='alex'
def fun1():
nonlocal name
name ='wo'
print(name)
fun1()
print(name)
fun()
print(name) #输出为alex
- 建议全局变量全部为大写
浙公网安备 33010602011771号