栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python函数传参方式_python函数大全及使用?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python函数传参方式_python函数大全及使用?

python——函数
目录
一、函数是什么 函数调用 函数返回 二、函数的参数传递 1.位置传参 2.关键字传参 3.*序列传参 4.**字典关键字传参 5.综合传参 三、函数的缺省参数 四、函数的不定长参数 1.星号元组传参 2.双星号字典传参 五、函数作用域 1.全局变量和局部变量/h4> 2.作用域分类 变量名查找规则 3.global语句 4.函数嵌套 5.nonlocal语句(非本地,非局部

一、函数是什么?
    函数是一段可执行的代码块作用
    ①.划分功能模块,更好管理软件工程
    ②.复用代码,减少开发工作量
    ③.提高代码阅读性,降低维护成本定义:
def function([参数列表(parameter list)]):
	[注释]
	语句块
	return[value]

说明:

函数本身也是一个变量(可调用类型,只读)
函数有自己的命名空间
参数列表可以有,可以没有
内容以冒号开始且缩进
语句块部分不能为省略,若为空语句,需填充pass
return[]结束语句。选择性地返回一个值给调用方,若无则返回None

demo1:

#无参数时
def hello():
	print("hello!")
	return[0]

#有参数时
def hello(n):
	if n==1:
		print("hello",n)
	return 

函数调用

函数调用:函数名([参数列表])
1.函数调用是一个表达式
2.若无return语句,函数执行完毕返回None值对象
3.若需返回其他的值对象需用return语句
4.函数使用是必须先定义后调用

def hello(n):
	if n==1:
		print("hello",n)
	return 
hello(1)

函数返回

return[表达式]
作用:结束当前函数的执行,返回到调用函数的地方,同时返回一个值对象的引用关系
①.return可以省略 ==> return None
②.可以返回一个值或一组值(逗号隔开)

二、函数的参数传递
    位置传参关键字传参*序列传参**字典关键字传参综合传参

    1.位置传参

    位置传参:实际参数的对应关系与形式参数的对应关系是以位置来传递的。

    def sum(a,b,c):
    	print('a=',a)
    	print('b=',b,'c=',c)
    sum(1,2,3)
    >>>a=1
    >>>b=2,c=3
    

    说明
    实参和形参通过位置进行对应和传递
    实参和形参的个数必须完全相同

    2.关键字传参

    关键字传参:指传递参数时按照形参的名称给关键字赋值
    实参和形参按名称进行匹配(可无序

    def sum(a,b,c):
    	pass
    sum(b=2,a=1,c=3)
    

    3.*序列传参

    序列类型(list,tuple,str)作为参数列表传递
    要求:序列的元素个数必须与参数个数相同

    def different(a,b,c):
    	pass
    s1=[11,22,33]    #列表
    different(*s1)
    //
    s2=(11,22,33)  #元组
    different (*s2)
    //
    s3="11,22,33"  #str
    different(*s3)
    

    4.**字典关键字传参

    实参和形参通过字典进行传递和匹配,字典的传递给键对应的形参

    demo2

    def different(a,b,c):
    	pass
    d1={"c":33,"a":11,"b":22}
    different(**d1)
    

    TIPS:

    字典传参的键名和形参名必须一致
    键名必须为字符串
    键名要在形参中存在

    5.综合传参

    以上几种的混合使用

    三、函数的缺省参数

    若形参被赋予默认参数值,那么该函数在调用时,若无实参传递则使用默认值计算

    语法:

    def 函数名(形参1=默认1,形参2=默认2,……):
    #例如
    def info(name,age=1,addr='不详'):
    	print ('姓名':name,"年龄":age,"住址":addr)
    

    说明:

      必须自右至左以此存在。若从某个地方开始有,则它右边的部分也必须有缺省参数。调用时可更改默认参数

    四、函数的不定长参数

    不定长参数
    {

      星号元组形参双星号元组形参

    }

    1.星号元组形参

    语法:

    def 函数名(*元组形参名):
    	代码块
    	return
    #demo
    def myfun(*args):
    	print ("实参个数是",len(args))
    	print(args)
    	i=1
    	for x in args:
    		print("第",i,"个参数是:",x)
    		i+=1
    myfun()
    

    命名关键字形参:如果要限制关键字参数的名字,可用命名关键字参数
    *之后的参数被视为命名关键字参数

    语法:

    def 函数名(*元组形参名,命名关键字形参名):
    	代码块
    	return
    或
    def 函数名 (*,命名关键字形参名)
    	代码块
    	return
    #demo
    def myfun(a,b,*arge,c,d):
    	print(a,b,c,d,args)
    myfun (11,b=2,c=33,d=44)
    
    >>>11,22,33,44,()
    >>>
    >>>
    

    2.双星号字典形参

    语法:

    def 函数名(**dict字典形参名):
    	代码块
    	return
    #demo
    def myfun(**kwargs):
    	print("参数个数:",len(kwargs.items()))
    	for k,v in kwargs.items():
    		print(k,"->>",v)
    myfun(name="lilei",age=18)
    

    参数的参数列表顺序:
    以上传参方式均可混合搭配使用
    顺序为:
    位置形参,星号元组形参,命名元组形参,双星号字典形参,默认

    有其他不懂的地方

    >>>help"def"
    

    可变 / 不可变类型的实参的参数传递的区别
    可变类型:
    列表list,集合set,字典dict
    可以改动其里面的内容,本身位置不变
    不可变类型:
    固定集合 frozenset,元组tuple,字符串 str,数字numbers

    五、函数作用域
      作用域是python程序的一块文本区域,是变量或函数访问时查找名称
    的范围空间

    1.全局变量和局部变量

    ①.全局变量:定义在函数外部,当前文件内部的变量
    ②.局部变量:定义在函数内部的变量(包含函数参数)

    #demo
    v=100			//全局变量
    def fn():
    	v=200		//局部变量
    	print(v)
    fu() //200
    print(v) //100
    
    2.作用域4分类:
    2.作用域4分类:
    ①.局部作用域(函数内) 		Local 							L
    ②.外部嵌套函数作用域 			Enclosing function locals		E
    ③.函数定义所在文件的作用域		Global(moudle)					G
    ④.python内置模块作用域 		Built-in(python)				B
    
    #demo
    '''
    __doc__显示的是该部分内容
    
    '''
    v=100   		#全局作用域G
    def fun1():
    	v=200		#外部嵌套作用域E
    	print("fun1.v=",v)
    	def fun2():
    		v=300	#局部作用域L
    		print("fun2.v=",v)
    	fun2()
    fun1()
    print("v=",v)
    print(__doc__)	#__doc__是内建作用域变量
    

    变量名查找规则:

    在访问变量时,先查找本地变量,然后是包裹此函数的外部函数的函数内部变量,之后是全局变量,最后是内置变量
    L—>E—>G—>B


    3.global语句

    global 语句:全局声明
    作用:将函数内的变量声明为全局变量
    语法:global 变量名1,变量名2,……
    tip:若形参与全局变量冲突时global失效

    #demo1
    v = 100
    def fn():
        global v  			# 声明全局变量v
        v = 200  			# 修改全局的v变量
        print(v)
        
    fn()
    print(v)
    
    #demo2
    v = 100
    def fn(v):
        global v  			# error,v出现了参数列表里面		
        print(v)
        
    fn(200)
    

    global说明:
    1.全局变量如果要在函数内部被赋值,则必须经过全局声明,否则被认为是局部变量
    2.全局变量在函数内部不经过声明可以直接读取访问(前提是变量已经存在)
    3.不能先声明局部变量,,再用global声明为全局变量,此做法不符合语法规则
    4.global变量列表里的变量名不能出现在此作用的参数列表里,for循环控制目标,类定义,函数定义以及import导入名字中

    4.函数嵌套
      函数嵌套是指一个函数里用def语句来创建其它函数的情况
    
    #嵌套示例
    def fn_outher():
    	print("外部函数被调用")
    	def fn_inner():
    		print("fn_inner被调用")
    	fn_inner()
    	print("外部函数调用结束")
    fn_outher()
    

    5.nonlocal 语句 (非本地,非局部)

    作用:

      告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量。而是外部嵌套函数内的变量
    
    语法: nonlocal 变量名1,变量名2,……
    
    # nonlocol语句
    var = 100
    
    
    def outter():
        var = 200
    
        def inner():
            nonlocal var  # 指定var为外层嵌套函数作用域
            # global var
            var += 1  # 如果不声明此行会因为变量名重复而出错
            print("innner.var=", var)
        inner()
        print("outter.var=", var)
    
    
    outter()
    
    #一般命名的时候就会把作用域定义好,基本不会用这种方法
    

    说明:

      nonlocal语句只能在被嵌套函数的内部进行使用访问nonlocal变量将对外部嵌套函数的作用域内的变量进行操作当有两层或两层以上函数嵌套层时,访问nonlocal变量只对最近一层的变量进行操作nonlocal语句的变量列表里的变量名,不能出现在此作用域的参数列表中

    两个函数:
    globals() 返回当前全局作用域内变量的字典
    locals() 返回当前局部作用域内变量的字典

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/783638.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号