python 函数

本文详细介绍了Python函数的定义、参数类型及传递方式,并探讨了参数作用域及lambda表达式的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接


(一)函数声明:

def <函数名> (参数列表):

    <函数语句>

    return <返回值>

1)无返回值的函数声明

>>> def printAll(X):
...     for x in X:
...             print x
...
>>> l = [1,2,3,4]    #定义一个列表
>>> print l
[1, 2, 3, 4]
>>> printAll(l)
1
2
3
4
>>> t = ('a','b','c') #定义一个元组
>>> print t
('a', 'b', 'c')
>>> printAll(t)
a
b
c
>>>

2)带返回值的函数声明:

>>> def sum(L):
...     result = 0
...     for i in L:
...             result = result + i
...     return result
...
>>> l = [1,2,3,4,5]
>>> sum(l)
15
>>> r = sum(l)
>>> print r
15
>>>

(二)函数中的参数

1)参数默认值

def <函数名>(参数=默认值):

    <语句>

>>> def cube(x = 5):
...     return x ** 3
...
>>> cube(2)
8
>>> cube()
125
>>>

>>> def fun(x = 1, y = 2, z = 3):
...     return (x + y - z) * 2
...
>>> fun()
0
>>> fun(2,3,1)
8
>>> fun( , , 5)   #这样是错误的
  File "<stdin>", line 1
    fun( , , 5)   #这样是错误的
         ^
SyntaxError: invalid syntax
>>> def fun(x = None, y = None, z = None):
...     if None == x:
...             x = 1
...     if None == y:
...             y = 2
...     if None == z:
...             z = 3
...     return (x + y - z) * 2
...
>>> fun()
0
>>> fun(None,None,5)
-4
>>>

2)参数传递

参数传递的方式有两种:一种是按照声明函数时的参数的顺序进行传递,另一种是按照参数名传递。

fun(1,2,3)                      #合法

fun(z = 1, x = 2, y = 3)  #合法

fun(1, z = 3, y = 2)        #合法

fun(z = 3, y = 2, 1)        #不合法,按顺序传递的参数不能位于按参数名传递的参数之后

 

3)可变长参数:

声明一个可变长参数的函数只需以*开头定义一个参数即可。

>>> def mylist(*list):
...     l = []
...     for i in list:
...             l.extend(i)   #将所有参数中的列表合并到一起
...     return l
...
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> mylist(a,b)
[1, 2, 3, 4, 5, 6]
>>> mylist(b,c,a)
[4, 5, 6, 7, 8, 9, 1, 2, 3]
>>>

4)参数的引用:

在C语言函数中有传值和传址两种方式,传址能够改变参数的值,传值并不能改变参数的值。

在python中,则通过列表的方式改变参数的值。

>>> def funXX(x):
...     x = x ** 2
...
>>> def funYY(x):
...     x[0] = x[0] ** 2
...
>>> a = 2
>>> funXX(2)
>>> a
2
>>> b = [2]
>>> funYY(b)
>>> b
[4]
>>>

三)参数的作用域

全局变量的定义:

>>> def fun(x):
...     global a  #定义全局变量
...     return a + x
...
>>> a = 5
>>> fun(3)
8
>>> a = 2
>>> fun(3)
5
>>>

四)lambda表达式:

lambda表达式用来声明一个匿名的函数,使用lambda声明的函数返回一个值,在调用函数的使用直接使用lambda表达式返回值。

格式:  lambda 参数列表 : 表达式

>>> def show():
...     print 'hello'
...
>>> f = lambda:show()       #调用无参数函数
>>> f()
hello
>>> def shown(n):
...     print 'hello! ' * n
...
>>> fn = lambda x : shown(x)
>>> fn(2)
hello! hello!
>>> def usereturn(x):
...     return x * 2
...
>>> fr = lambda x : usereturn(x) * x
>>> fr(3)
18
>>> fun lambda x: print x     #不能在lambda中使用print语句
  File "<stdin>", line 1
    fun lambda x: print x     #不能在lambda中使用print语句
             ^
SyntaxError: invalid syntax
>>>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值