函数的参数与嵌套使用

Posted 俊先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的参数与嵌套使用相关的知识,希望对你有一定的参考价值。

函数的使用:先定义后使用 #与变量的定义相似
x=1 变量名==函数名
def func(): 值 == 函数值
print(‘hello world‘)

定义阶段: 只检测语法,不执行代码/

return返回值类型:
效果:只能返回一次值,终止函数的执行
无return 默认 None return返回值:如果只有一个则返回本身,多个值则为元组形式

形参<形式上存在,而实际不存在,变量名>与实参<实际存在,变量值>:
def foo(x,y):
return x+y

foo(1,2)

位置参数:按照从左到右的顺序依次定义的参数
def foo(x,y):
return x+y #按位置定义的形参必须传值,多一个不行,少一个不行

foo(1,2,3) #按位置定义的实参,与形参一一对应

关键词实参数:实参在定义时,按key=value形式定义
def foo(x,y):
print(x)
print(y)
foo(y=10,x=1) #关键词参数不受位置影响,不像位置实参与形参那样一一对应

注意:位置实参必须在关键字实参前面
既可以用位置实参又可以是关键词实参《实参的形式》,但是一个形参只能被传值一次


默认参数<形参>:定义阶段有值,默认阶段无值
def foo(x,y=10):
print(x)
print(y)

#形参的应用:值经常变化定义为位置形参,值大多数情况不变则可定义为默认实参
默认参数通常定义为不可变类型
默认参数只在被定义时赋值一次
注意:默认参数必须放在位置形参后面

可变长参数:指实参的个数不固定
#按位置定义的可变长度的实参:* #()元组形式保存 *等同于位置参数
#按关键字定义的可变长度的实参:** #{}字典格式保存
def func(x,y,*args): #x=1.y=2,args=(3,4,5,6)
print(x,y)
print(args)
fuc(1,2,3,4,5,6)


命名关键字参数:
定义在*后的形参,此类形参必须被传值,而且要求实参必须以关键字的形式传入

def register(name,age,**kwargs):
print(kwargs)

register(name=‘jason‘,age=18)


函数嵌套调用:
函数内部调用另外一个函数

函数嵌套定义:
def f1():
def f2():
def f3():...

技术分享
def f1():
    def f2():
        def f3():
            print(f3)
        print(f2)
        f3()
    print(f1)
    f2()
f1()
View Code

 


名称空间: cmd/python/import this 最后一行有提示
存放名字与值的绑定关系
分三种:<加载顺序由上到下>
内置名称空间:python解释器自带的名字 ,解释器启动就生成这个空间

全局名称空间:文件级别定义的名字都会存放在全局名称空间,执行python文件时产生
不是内置定义的也不是函数内部的就是全局
局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效
def func(x,y):
z=3
加载顺序:内置名称空间>>>全局名称空间>>>>局部名称空间
取值:局部名称空间>>>全局名称空间>>>>内置名称空间


作用域:作用范围 ---->在定义阶段,作用域就固定死了。
分两种:
全局作用域:包含内置名称空间与全局名称空间的名字属于全局范围,
在整个文件的任意位置都能被引用,全局有效

局部作用域:局部名称空间属于局部范围,
只在函数内部可以被引用,局部有效。

局部作用域------>全局作用域

函数是第一类对象:指的是函数可以被当作数据传递
可被引用
可当作函数的参数
可以当作函数的返回值
可做


闭包
闭包函数:函数内部定义的函数,成为内部函数
该内部函数包含对外部作用域,而不是对全局作用域名字的
















































































以上是关于函数的参数与嵌套使用的主要内容,如果未能解决你的问题,请参考以下文章

函数的参数与嵌套使用

Android 动画嵌套片段

EXCEL函数内部的嵌套函数

python--函数的返回值函数参数的使用名称空间与作用域函数嵌套函数对象

Recyclerview 滚动在嵌套滚动视图中的片段中不起作用

这个嵌套类构造函数片段可以应用于泛型类吗?