加入收藏 | 设为首页 | 会员中心 | 我要投稿 泉州站长网 (https://www.0595zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python函数参数及实施

发布时间:2021-12-05 11:37:30 所属栏目:教程 来源:互联网
导读:每个编程语言中(诸如:Java、C++、C)等都有函数的,Python也不例外。 函数的主要作用有哪些呢? 1、将程序的功能进行模块化,功能模块清晰 2、减少重复代码的工作量 3、便于阅读及维护、调试等 一、函数的结束及返回值 # -*- coding: utf-8 -*- def f1():

每个编程语言中(诸如:Java、C++、C)等都有函数的,Python也不例外。
 
函数的主要作用有哪些呢?
 
1、将程序的功能进行模块化,功能模块清晰
 
2、减少重复代码的工作量
 
3、便于阅读及维护、调试等
 
一、函数的结束及返回值
 
# -*- coding: utf-8 -*-
 
def f1():
    print("This is Fun()")
    return  #函数调用结束
    print("-- End 1--")
    print(" Print 2")
    return "--- End 2  --"
 
f1()
print(type(f1()))
 
运行结果:
 
    This is Fun()
 
    This is Fun()
 
    <class 'NoneType'>
 
Python函数参数及使用
 
1.函数在遇到return语句时,此时函数调用已经结束
 
2.函数是有返回值的,只不过这里是None类型
 
再看下面的例子:
 
def mth_return():
    return 1,"String",["a","b"],{"K1":1,"Key2":2}
print(mth_return())
print(type(mth_return()))
 
运行结果:
 
    (1, 'String', ['a', 'b'], {'K1': 1, 'Key2': 2})
 
    <class 'tuple'>
 
 Python函数参数及使用
 
此时,函数的返回值是一个元组
 
二、函数的参数
 
  对于函数,其函数名后面的变量通常称为:形参,调用函数时,提供的值称为:实参
 
# -*- coding: utf-8 -*-
 
def method(name,age):  #name,age是形参
    print(name,age)
def method2(name,age ="18"):  #提供默认参数值
    print(name,age)
 
n = "Mr.James"
method(n,38)  #n是实参
method2("Zhang")
method2("Mr.Zhang",28)
 
运行结果:
 
    Mr.James 38
 
    Zhang 18
 
    Mr.Zhang 28
 
Python函数参数及使用
 
三、函数的关键字参数
 
  对于上面的例子,其函数是位置位置参数,位置一一对应,不能多也不能少
 
  下面的这个这个例子跟上面的有点不一样,在Python中称之为:关键字参数
 
# -*- coding: utf-8 -*-
 
def test(name="James",age=29):
    print("name:{},{}".format(name,age))
 
test(age=20,name="Mr.Zhang")
 
运行结果:
 
    name:Mr.Zhang,20
 
Python函数参数及使用
 
四、函数的可变长参数
 
 对于位置参数而言,形参及实参需要一一对应,若有时不确定需要哪些参数或为了日后能很好的扩展,Python中提供了可变长参数
 
用法:def function(self,*args,**kwargs)
 
具体例子:
 
例子1:
 
# coding = utf-8
 
def test(name,*args):
    print(name)
    print(args)
    print(args[3])
 
test("Mr.Zhang",1,2,3,["a","b"],{"Key1":1,"Key2":2})  # *args 返回的是一个元组
 
运行结果:
 
    Mr.Zhang
 
    (1, 2, 3, ['a', 'b'], {'Key1': 1, 'Key2': 2})
 
    ['a', 'b']
 
Python函数参数及使用
 
例子2:
 
# coding = utf-8
def test2(name,*args,**kwargs):  # **kwargs返回的是一个字典
    print(name)
    print(args)
    print(kwargs)
 
test2("Mr.Zhang",1,2,3,['a','b'],{"Key1":1,"Key2":2},age=18,sex="F")
 
运行结果:
 
Mr.Zhang
(1, 2, 3, ['a', 'b'], {'Key1': 1, 'Key2': 2})
{'age': 18, 'sex': 'F'}
 
Python函数参数及使用
 
函数的嵌套
 
在Python编程语言中,在函数体内创建另外一个函数(对象,因为Python一切皆对象,函数其实也是对象)是完全合法的,这种函数叫做内部/嵌套函数。
 
例子:
 
# coding : utf-8
def outer():
    def inner():
        print("is Inner Method")
    print("Is outer Method")
    inner()
 
#调用outer函数
outer()
#调用outer()的内部函数,报错
# inner()
 
运行结果:
 
    Is outer Method
    is Inner Method
 
        inner()  #调用inner()时,出现如下错误
    NameError: name 'inner' is not defined
 
Python函数参数及使用
 
函数的闭包
 
何为闭包?
 
 如果在一个内部函数里,对在外部作用域(不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)
 
 说的明了一点就是:在内部函数中,引用了外部函数的自由变量
 
闭包的作用:
 
    保存函数的状体信息,使函数的局部变量信息可以保存下来,对于安装计算、隐藏状态是很有用的
 
    在GUI或者在很多API支持回调函数的事件驱动编程中也有很用处
 
闭包有两种调用方式:
 
    在内部直接调用
 
    返回函数名称
 
e.g
 
 1.在内部直接调用
 
# -*- coding: utf-8 -*-
 
def outer(name):
    def inner(name):
        # name = "Mr.Zhang"  #这里的name值会覆盖调用outer函数实参的值,这是涉及变量在函数作用域的范围
        print("sub method :%s" %name)
        # 使用__closuer__内置属性来判断是否是一个闭包,返回地址,则是,返回None,则不是闭包函数
        print(inner.__closure__)
    inner(name)  #在内部直接调用
outer("GuiDo")
 
运行结果:
 
    sub method :GuiDo
    (<cell at 0x000001D2792EF7C8: function object at 0x000001D2793687B8>,)
 
Python函数参数及使用
 
e.g
 
2.返回函数名称
 
# -*- coding: utf-8 -*-
 
def sumer(num = 0):
    count = [num]
    def add():
        count[0] += 1
        return count[0]
    return add
 
f  = sumer(3)
print(f())
print(f())
print(f())
 
运行结果:
 
    7
    8
    9

(编辑:泉州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读