python两个参数函数,python 两个参数

python self 为什么是两个参数

Python中默认参数self的理解

创新互联公司专注于阜宁网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供阜宁营销型网站建设,阜宁网站制作、阜宁网页设计、阜宁网站官网定制、成都微信小程序服务,打造阜宁网络公司原创品牌,更为您提供阜宁网站排名全网营销落地服务。

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

虽然你可以给这个参数任何名称,但是强烈建议你使用self这个名称——其他名称都是不赞成你使用的。使用一个标准的名称有很多优点——你的程序读者可以迅速识别它,如果使用self的话,还有些IDE(集成开发环境)也可以帮助你。

给C++/Java/C#程序员的注释Python中的self等价于C++中的self指针和Java、C#中的this参考。

你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。

这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

声明add()方法时,若不加self,则提示

TypeError: add() takes exactly 2 arguments (3 given)

File "D:\PythonWorkplace\PythonDemo\Tet.py", line 15, in module

test.add(1,3)

错误。

拓展一下:

self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。

self是一种习惯,如上面的程序,把sayHi(self)换成sayHi(fles),同样可以得到正确的输出。

python中定义函数fun(a,n),输入a和n两个参数,输出a的n次方 。

#include stdio.h

int fun(int a,int n)

{

int t;

for(t=1;n;n--)

  t*=a;

return t;

}

int main()

{

int a,n;

scanf("%d%d",a,n);

printf("%d\n",fun(a,n));

return 0;

}

python 函数参数类型

python 的函数参数类型分为4种:

1.位置参数:调用函数时根据函数定义的参数位置来传递参数,位置参数也可以叫做必要参数,函数调用时必须要传的参数。

当参数满足函数必要参数传参的条件,函数能够正常执行:

add(1,2) #两个参数的顺序必须一一对应,且少一个参数都不可以

当我们运行上面的程序,输出:

当函数需要两个必要参数,但是调用函数只给了一个参数时,程序会抛出异常

add(1)

当我们运行上面的程序,输出:

当函数需要两个必要参数,但是调用函数只给了三个参数时,程序会抛出异常

add(1,2,3)

当我们运行上面的程序,输出

2.关键字参数:用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。

add(1,2) # 这种方式传参,必须按顺序传参:x对应1,y对应:2

add(y=2,x=1) #以关健字方式传入参数(可以不按顺序)

正确的调用方式

add(x=1, y=2)

add(y=2, x=1)

add(1, y=2)

以上调用方式都是允许的,能够正常执行

错误的调用方式

add(x=1, 2)

add(y=2, 1)

以上调用都会抛出SyntaxError 异常

上面例子可以看出:有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序的

3.默认参数:用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值,所有位置参数必须出现在默认参数前,包括函数定义和调用,有多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上

默认参数的函数定义

上面示例第一个是正确的定义位置参数的方式,第二个是错误的,因为位置参数在前,默认参数在后

def add1(x=1,y) 的定义会抛出如下异常

默认参数的函数调用

注意:定义默认参数默认参数最好不要定义为可变对象,容易掉坑

不可变对象:该对象所指向的内存中的值不能被改变,int,string,float,tuple

可变对象,该对象所指向的内存中的值可以被改变,dict,list

这里只要理解一下这个概念就行或者自行百度,后续会写相关的专题文章讲解

举一个简单示例

4.可变参数区别:定义函数时,有时候我们不确定调用的时候会多少个参数,j就可以使用可变参数

可变参数主要有两类:

*args: (positional argument) 允许任意数量的可选位置参数(参数),将被分配给一个元组, 参数名前带*,args只是约定俗成的变量名,可以替换其他名称

**kwargs:(keyword argument) 允许任意数量的可选关键字参数,,将被分配给一个字典,参数名前带**,kwargs只是约定俗成的变量名,可以替换其他名称

*args 的用法

args 是用来传递一个非键值对的可变数量的参数列表给函数

语法是使用 符号的数量可变的参数; 按照惯例,通常是使用arg这个单词,args相当于一个变量名,可以自己定义的

在上面的程序中,我们使用* args作为一个可变长度参数列表传递给add()函数。 在函数中,我们有一个循环实现传递的参数计算和输出结果。

还可以直接传递列表或者数组的方式传递参数,以数组或者列表方式传递参数名前面加(*) 号

理解* * kwargs

**kwargs 允许你将不定长度的键值对, 作为参数传递给函数,这些关键字参数在函数内部自动组装为一个dict

下篇详细讲解 *args, **kwargs 的参数传递和使用敬请关注

python中两个函数间参数传递问题

def plus(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的值传递给下一个函数

python中一个函数有两个参数a、b ,a是列表,b是一个数字,找出a列表中两数之和等于b,打印出这些数

def shili(a,b):

answer=[]

for x in a:

if x=b/2:

y=b-x

if y in a :

answer.append((x,y))

return answer

a=[1,2,3,4,5,6,7,8,9]

b=9

c=shili(a,b)

print(c)

#输出结果:[(1, 8), (2, 7), (3, 6), (4, 5)]


当前标题:python两个参数函数,python 两个参数
文章位置:http://ybzwz.com/article/hegijc.html