python函数做参数
‘壹’ python怎么给函数传参
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两
种:值传递和引用传递。
推荐:Python教程
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放
进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函
数的实参变量的值。
引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函
数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正
因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
更多技术请关注Python视频教程。
‘贰’ python函数作为参数报错
那个不能用括号, 来来来, 我给你加个BUFF
print xxx是2.x的用法
python 3.x中必须使用print(xx), 即, 用括号
‘叁’ Python的函数和参数
parameter 是函数定义的参数形式
argument 是函数调用时传入的参数实体。
对于函数调用的传参模式,一般有两种:
此外,
也是关键字传参
python的函数参数定义一般来说有五种: 位置和关键字参数混合 , 仅位置参数 , 仅关键字参数 , 可变位置参数 , 可变关键字参数 。其中仅位置参数的方式仅仅是一个概念,python语法中暂时没有这样的设计。
通常我们见到的函数是位置和关键字混合的方式。
既可以用关键字又可以用位置调用
或
这种方式的定义只能使用关键字传参的模式
f(*some_list) 与 f(arg1, arg2, ...) (其中some_list = [arg1, arg2, ...])是等价的
网络模块request的request方法的设计
多数的可选参数被设计成可变关键字参数
有多种方法能够为函数定义输出:
非常晦涩
如果使用可变对象作为函数的默认参数,会导致默认参数在所有的函数调用中被共享。
例子1:
addItem方法的data设计了一个默认参数,使用不当会造成默认参数被共享。
python里面,函数的默认参数被存在__default__属性中,这是一个元组类型
例子2:
在例子1中,默认参数是一个列表,它是mutable的数据类型,当它写进 __defauts__属性中时,函数addItem的操作并不会改变它的id,相当于 __defauts__只是保存了data的引用,对于它的内存数据并不关心,每次调用addItem,都可以修改 addItem.__defauts__中的数据,它是一个共享数据。
如果默认参数是一个imutable类型,情况将会不一样,你无法改变默认参数第一次存入的值。
例子1中,连续调用addItem('world') 的结果会是
而不是期望的
‘肆’ 在python的函数中,如何将列表list的一部分作为函数的参数
后面paraTestList(a[2:])中,括号里面的a[2:]命令是指创建了一个包含列表a的一部分的一个副本列表。具体做法是:
def
paraTestList(L):
L[0]='z'
a=['a','b','c','d']
b=a[2:]
paraTestList(b)
print(b)
具体情况如下:
1.Python的函数定义简单但灵活度大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,也可以简化调用者的代码。
2.默认参数可以简化函数的调用,设置默认参数时要注意:一是必选参数在前,默认参数在后,否则Python的解释器会报错;二是如何设置默认参数。当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
3.默认参数降低了函数调用的难度,而一旦需要更复杂的调用时,又可以传递更多的参数来实现。无论是简单调用还是复杂调用,函数只需要定义一个。
4.有多个默认参数时,调用的时候,既可以按顺序提供默认参数。
4.Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。
‘伍’ 简述python函数中参数的几种形态
在调用函数时,通常会传递参数,函数内部的代码保持不变,针对 不同的参数处理不同的数据。
有位置传参、关键字传参、默认值参数、多值参数等。
1、参数传递
形参和实参:
形参:定义 函数时的 参数变量
实参:调用 函数时,使用的参数变量
参数传递的过程,就是 把实参的引用 传递给 形参 ,使用实参的值来执行函数体的过程。
在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的
2、位置实参
按照参数位置,依次传递参数,这是最普通的方式。
‘陆’ Python基础实战之函数的参数讲解(三)
参数可以是任意类型。
比如可以是列表。
-------------------------------
library=['python精通','MySQL','数据分析','人工智能']
#形参
def add_book(bookname):
library.append(bookname)
print('图书添加成功!')
pass
def show_book(books):
for book in books:
print(book)
pass
pass
#调用函数
add_book('新概念英语')
show_book(library)
------------------------------
#输出列表中所有大于50的数
list1=[23,45,77,88,58,10]
def get_list(list_1):
new_list=[ ]
for e in list_1:
if e>=50:
new_list.append(e)
pass
pass
print(new_list)
pass
#调用函数
get_list(list1) #[77,88,58]
------------------------------
#删除列表中小于50的数
def remove_from_list(list_1):
n=0
while n<len(list_1): p=""> </len(list_1):>
if list_1[n]<50:
list_1.remove(list_1[n])
pass
else:
n+=1
pass
pass
print(list_1)
pass
#调用函数
remove_from_list(list1) #[77,88,58]
‘柒’ python中如何将函数的运算结果传出来作为函数参数使用
首先你要明白,Python的函数传递方式是赋值,而赋值是通过建立抄变量与对象的关联实现的。
对于你的代码:
执行 d = 2时,你在__main__里创建了d,并让它指向2这个整型对象。
执行函数add(d)过程中:
d被传递给add()函数后,在函数内部,袭num也指向了__main__中的百2
但执行num = num + 10之后,新建了对象12,并让num指向了这个新对象——12。
如果你明白函数中的局部变量与__main__中变量的区别,那么很显然,在__main__中,d仍在指着2这个对象,它没有改变。因此,你打印d时得到了2。
如果你想让输出为12,最简洁的办法是:度
在函数add()里增加return num
调用函数时使用d = add(d)
代码如下:
def add(num):
num += 10
return num
d = 2
d = add(d)
print d
‘捌’ 关于python函数作为参数传入的问题
def mul(x):
return x*x
def my_map(func, args):
for n in args:
print(func(n))
my_map(mul, [1,2,3,4])
‘玖’ python中函数的参数怎么写
*代表的是参数个数不确定的情况;
带一个星号(*)参数的函数传人的参数存储为一个元组(tuple);
而带两个星号(*)参数的函数传人的参数则存储为一个字典(dict);
由于传入的参数个数不定,所以当与普通参数一同使用时,必须把带星号的参数放在最后。