关于python函数作为参数传入的问题

2021-01-11 19:09:14 字数 1890 阅读 7866

1楼:匿名用户

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中两个函数间参数传递问题

2楼:匿名用户

defplus(a,b):

z=a+1

c=b+5

return(z,c)

(q,w)=plus(1,2)

plud(q,w)

##我这里假设a=1,b=2

##首先plus(1,2),得到z=2,c=7,通过return让(q,w)=(z,c)的值,然后plud(q,w)即可实现将z,c的值传递给下一个函数

3楼:匿名用户

defplus(a,b):

z=a+1

c=b+5

printa+b

returnc,z

c,z=plus(a,b)

defplud(c,z):

printc+z

python传入参数的问题

4楼:匿名用户

python在定义函数的时候,存在两种特殊定义,*和**的传值方式,正是因为这两种定义,python 函数的传值,非常灵活,在cpp编程的时候,不支持方法重载,因为没必要了。。。

在参数前面加个*号,表明这个函数会将这个变量代表的内容,转换为一个元祖,所以函数可以接收n个元素,这n个元素在函数里面转成一个元祖。比如这种

deffun1(*a):#定义

print(a)#1输出

print(*a)#2输出

x=[1,2,3]

fun1(x)#1调用

fun1(*x)#2调用

fun(1,2,3)#3调用

因为fun1定义的时候,告诉函数,x可以接受n个对象,这个对象在函数里面会转成一个元祖保存,所以在1调用的时候,x在fun1函数里面会被当成一个元祖,但我们知道,x其实是一个元祖,1调用的时候,就传了一个对象进去。所以,结果如下

([1,2,3],) #1输出

[1,2,3] #2输出

为啥?1输出,清楚无误的告诉print(print也是函数,也支持*args方式传值),你直接把a对象打印出来,a对象是啥?一个包含1个对象的元祖,所以就是(x,)这样的结果。

那2输出呢?2输出在调用的时候,在a对象前面已经拆解了元祖,所以,传给print函数的,是一个对象,就是x了。

同理,在2调用的时候,因为x对象被拆开,所以,func1被传入多个值,此时的a是一个元素和x相同的元祖。所以2调用的1输出,就是一个值,就是(1,2,3)。2输出,因为被拆解了再传给print,所以,print其实被传入了多个值,然后将这些值全部打印出来,所以结果是1,2,3.

那3调用呢?其实本质和2调用是一样的

那双星号呢?双星号是拆解key-val格式对的内容,在函数定义的时候,是默认讲传入的产生转为字典。而规律和上面说的单星号一致。

如果用单星号去拆解key-val对象,只会拆解出key。后面的就不多说了。

为啥单引号拆解key-val对象,可以拆出key呢。。。源**就这么执行的,为啥当初设计,理由是啥。。。不清楚。。

5楼:匿名用户

你前面有个*,传入的是一个tuple不是一个dict

>>>deftest(*args):

print(args)

>>>test(*)

('a','b')

>>>test()(,)

Python新手关于函数的问题,Python新手关于函数的一个问题

1楼 大话残剑 函数进入时把data3初始化成空值,函数最后增加return data3 如果没有找到,就会返回空。 函数调用后,判断返回值是否为空 一个python 小问题 。我新手求高手解答。请问这个函数到底怎么解释的,为什么第一种会报错。非常感谢 2楼 匿名用户 enumerate迭代器返回一...

关于Python len函数问题

1楼 吾还记得你的笑 虽然我觉得你已经解决了不过还是回答一下,line 1 括号里面的 i ask the world what is the love 是直接输出的,你直接在后面写你想要颠倒的内容就行,程序本身是正确的。 2楼 匿名用户 python len 方法返回字符串长度。 len 方法语法...

python函数问题,一个Python函数的问题 5

1楼 匿名用户 def sum x s 1while 1 s s x x 1 if not x break return s sum sum 5 print sum 2楼 匿名用户 python函数 函数是组织好的,可重复使用的,用来实现单一或相关联功能的 段。 函数能提高应用的模块性,和 的重复利...