linux python函数参数,Python函数参数及使用

Python函数参数及使用

每个编程语言中(诸如: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()

3a56279340b97408cc097115d8b3eeb0.png

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})

d180e8b0aa1494cf8fea5f32521d3d99.png

此时,函数的返回值是一个元组

二、函数的参数

对于函数,其函数名后面的变量通常称为:形参,调用函数时,提供的值称为:实参

# -*- 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

ad65e8df9367133da10ee87062e8a3ca.png

三、函数的关键字参数

对于上面的例子,其函数是位置位置参数,位置一一对应,不能多也不能少

下面的这个这个例子跟上面的有点不一样,在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

524b96c7bf53ff111fbed7c72dc9a7a6.png

四、函数的可变长参数

对于位置参数而言,形参及实参需要一一对应,若有时不确定需要哪些参数或为了日后能很好的扩展,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']

bad568a151d81ec295206bdec6862c06.png

例子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'}

1d589a3f13341022cf8a9d55417cd2e2.png

函数的嵌套

在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

4d82f49615366cfdb203eceeda37ef88.png

函数的闭包

何为闭包?

如果在一个内部函数里,对在外部作用域(不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(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

(,)

e0f6297e9fdc10b06aa045a69bcd397a.png

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

afec7116e3acacd1277da642b56e3e7d.png

https://www.linuxboy.net/topicnews.aspx?tid=17

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-07/159506.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值