python如何将值传递参数

作者&投稿:蹉狡 (若有异议请与网页底部的电邮联系)
python怎么向类中的函数传递参数~

Python中函数参数的传递是通过“赋值”来传递的。但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题”,也就说没有回答怎么赋值的问题。函数参数的使用可以分为两个方面,一是函数参数如何定义,二是函数在调用时的参数如何解析的。而后者又是由前者决定的。函数参数的定义有四种形式:

1. F(arg1,arg2,...)
2. F(arg2=,arg3=...)
3. F(*arg1)
4. F(**arg1)

第1 种方式是最“传统”的方式:一个函数可以定义不限个数参数,参数(形式参数)放在跟在函数名后面的小括号中,各个参数之间以逗号隔开。用这种方式定义的函数在调用的时候也必须在函数名后的小括号中提供相等个数的值(实际参数),不能多也不能少,而且顺序还必须相同。也就是说形参和实参的个数必须一致,而且想给形参1的值必须是实参中的第一位,形参与实参之间是一一对应的关系,即“形参1=实参1 形参2=实参2...”。很明显这是一种非常不灵活的形式。比如:"def addOn(x,y): return x + y",这里定义的函数addOn,可以用addOn(1,2)的形式调用,意味着形参x将取值1,主将取值2。addOn(1,2,3)和addOn (1)都是错误的形式。
第2种方式比第1种方式,在定义的时候已经给各个形参定义了默认值。因此,在调用这种函数时,如果没有给对应的形式参数传递实参,那么这个形参就将使用默认值。比如:“def addOn(x=3,y=5): return x + y”,那么addOn(6,5)的调用形式表示形参x取值6,y取值5。此外,addOn(7)这个形式也是可以的,表示形参x取值7,y取默认值5。这时候会出现一个问题,如果想让x取默认值,用实参给y赋值怎么办?前面两种调用形式明显就不行了,这时就要用到Python中函数调用方法的另一大绝招 ──关健字赋值法。可以用addOn(y=6),这时表示x取默认值3,而y取值6。这种方式通过指定形式参数可以实现可以对形式参数进行“精确攻击”,一个副带的功能是可以不必遵守形式参数的前后顺序,比如:addOn(y=4,x=6),这也是可以的。这种通过形式参数进行定点赋值的方式对于用第1种方式定义的函数也是适用的。
上面两种方式定义的形式参数的个数都是固定的,比如定义函数的时候如果定义了5个形参,那么在调用的时候最多也只能给它传递5个实参。但是在实际编程中并不能总是确定一个函数会有多少个参数。第3种方式就是用来应对这种情况的。它以一个*加上形参名的方式表示,这个函数实际参数是不一定的,可以是零个,也可以是N个。不管是多少个,在函数内部都被存放在以形参名为标识符的tuple中。比如:

对这个函数的调用addOn() addOn(2) addOn(3,4,5,6)等等都是可以的。

与第3种方式类似,形参名前面加了两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中。这时候调用函数必须采用key1=value1、key2=value2...的形式。比如:

1. def addOn(**arg):
2. sum = 0
3. if len(arg) == 0: return 0
4. else:
5. for x in arg.itervalues():
6. sum += x
7. return sum

那么对这个函数的调用可以用addOn()或诸如addOn(x=4,y=5,k=6)等的方式调用。

上面说了四种函数形式定义的方式以及他们的调用方式,是分开说的,其实这四种方式可以组合在一起形成复杂多样的形参定义形式。在定义或调用这种函数时,要遵循以下规则:

1. arg=必须在arg后
2. *arg必须在arg=后
3. **arg必须在*arg后

在函数调用过程中,形参赋值的过程是这样的:
首先按顺序把“arg”这种形式的实参给对应的形参
第二,把“arg=”这种形式的实参赋值给形式
第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参
第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参。
例子:

1. def test(x,y=5,*a,**b):
2. print x,y,a,b

就这么一个简单函数,来看看下面对这个函数调用会产生什么结果:
test(1) ===> 1 5 () {}
test(1,2) ===> 1 2 () {}
test(1,2,3) ===> 1 2 (3,) {}
test(1,2,3,4) ===> 1 2 (3,4)
test(x=1) ===> 1 5 () {}
test(x=1,y=1) ===> 1 1 () {}
test(x=1,y=1,a=1) ===> 1 1 () {'a':1}
test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1}
test(1,y=1) ===> 1 1 () {}
test(1,2,y=1) ===> 出错,说y给赋了多个值
test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1}
test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}

python 把变量的值传递给execute的sql中去的代码:
import pymysql
db = pymysql.connect(host="119.XX.XX.XX",
port=3306,
user="XXXXXXXX",
passwd="XXXXXXXXXXXXX",
db="XXXXXX",
charset='utf8')

# %s 占位符为需要传递的参数,切记不要加''双引号,要不然会报错
sql = "SELECT totalusercount * 1.4 FROM mm_project_uv_outdoor WHERE poiid = %s AND currenttime = %s"

cursor = db.cursor()
# 以下为传递多个参数的用法
cursor.execute(sql,['B00140N5CS','2019-04-23'])
# 传递单个参数时 cursor.execute(sql,'B00140N5CS')
print(cursor.fetchall())
db.close()

扩展资料:

函数
Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。为了增强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。比如:
>>> def randint(a, b):
... "Return random integer in range [a, b], including both end points."...
>>> help(randint)
Help on function randint in module __main__:
randint(a, b)
Return random integer inrange[a, b], including both end points.

参考资料来源:百度百科-python

python将值传递参数的方法:

将值赋给变量url,然后调用函数,将url写到函数名后面的括号中,这样就可以将值传递给函数的参数y了

示例代码如下:

执行结果如下:

更多Python知识,请关注:Python自学网!!




如何用python将变量及其值写入文本文件
a = 10with open('text.txt','w') as text: text.write('%s=%s'%('a',a))

python中请问如何快速将三个变量的值互相交换
python交换两个变量的值很简单,a,b = b,a 就可以,写成函数,代码如下:def jh(a,b):return b,a x = 1 y = 2 x,y = jh(x,y)print(x,y)

python 如何把变量的值传递给execute的sql中去
python 把变量的值传递给execute的sql中去的代码:import pymysql db = pymysql.connect(host="119.XX.XX.XX",port=3306,user="XXXXXXXX",passwd="XXXXXXXXXXXXX",db="XXXXXX",charset='utf8')s 占位符为需要传递的参数,切记不要加''双引号,要不然会报错 sql = "SELECT totalusercount * 1...

如何用python将变量及其值写入文本文件?
你的缩进有问题,这样就好了。x=5y=2z=x+y f=open('test-i.dat','a+')f.write(str("x=")+str(x)+'\\n')f.write(str("y=")+str(y)+'\\n')f.write(str("z=")+str(z)+'\\n')f.close()

python print 如何在输出中插入变量
Python中,将变量值插入到print输出中是通过print语句实现的。首先,你需要定义一个变量,例如a=6,Python会自动将其识别为整数类型,这与C语言有所不同。接着,使用print(变量名),即可显示变量的值。举个例子,完整的代码如下:如果你在Python 2版本中,print语句的简单形式可能是print A,这相当于...

python:如何将字典中的值写入文件txt或excel
使用pickle或json模块的dump方式写入文本中

python中如何将用户输入的坐标的第一个值输入一个数组,将逗号后面的...
判断用户输入的值有指定的字符 string=raw_input("please input a string")if "," in string 用"," in string判断用户输入的string是否有逗号字符 用逗号分隔输入两个数按照顺序进行运算 string=raw_input("please input two number,split by comma:")numbers=string.split(",")num1=float(numbers...

请问Python如何将print后的值导到原来的表格里(一开始导入excel利用Py...
pandas.DataFrame.to_excel 由dataframe对象直接调用,然后指定文件名、表名等各种参数。函数定义如下:DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, ...

Python语句中total=total+s,含义是?
这是一条 Python 赋值语句,其含义是将变量 total 的值加上变量 s 的值,并将结果重新赋值给变量 total。这里假设 total 和 s 都是数值类型的变量。可以理解为:total = total + s 其中 + 是加法运算符,表示将 total 和 s 的值相加。这条语句的作用是将 s 的值累加到 total 中,通常用于...

python如何输入任意个数值?
Python中可以使用input()函数获取用户输入,可以使用循环结构来实现输入任意个数值的功能。以下是两种常见的方法:方法一:使用while循环和try...except结构 nums = []while True:try:num = input("请输入一个数字(按回车键结束,输入非数字停止输入):")num = float(num)nums.append(num)except:...

云霄县17754465244: Python 的函数是怎么传递参数的? -
宥裴万祺: 首先你要明白,Python的函数传递方式是赋值,而赋值是通过建立变量与对象的关联实现的.对于你的代码:执行 d = 2时,你在__main__里创建了d,并让它指向2这个整型对象.执行函数add(d)过程中:d被传递给add()函数后,在函数内部,...

云霄县17754465244: Python里面的函数怎么按引用传递参数 -
宥裴万祺: 对象是传引用.单个数值传值.

云霄县17754465244: 廖雪峰Python中关于参数传递的例子,看不懂结果,求指点 -
宥裴万祺: 首先了解知识点1、函数声明参数带一个星号表示传入一个元组2、元组前面加星号意思是把元组拆成多个值3、传值先接受固定参数,然后接受不定数量的参数4、元组如果只有一个值,需要在后面加逗号,与数值进行区分 args的值是(1,2,3,4,),逗号后面的空没有意义,*args解开后分别是四个整形数字 将*args传给f1,f1接先接受固定参数,分别把1 2 3 传给abc 然后把4传给f1的内部变量args,f1声明中args带星号,表示args是一个元组 将4赋值给args,args是一个只有一个值的元组,为了与整形数值(4)区分,在4后面加逗号 就得到这个执行结果

云霄县17754465244: Python中怎么向sorted()传递参数reverse=True -
宥裴万祺: 1、查看sorted()函数的帮助信息.sorted(iterable,/,*,key=None,reverse=False). 2、iterable可迭代的对象.sorted对对象排序,返回的对象不会改变原对象. 3、key根据自定义规则来排序.字符串排序key默认则按照首字母排序,指定key以后按照指定规则排序.参数reverse默认值为False,表示正序,reverse=True表示倒序. 4、对元组列表进行排序,分别按照元组的不同对象,可以选定任意位置排序. 5、对字典的操作,可以在key中的lambda设置更多条件.

云霄县17754465244: python怎么将局部变量的值传递给全局变量 -
宥裴万祺: global语句声明后,指定的变量被认为是函数外的.后面的所有操作都是在操作函数外的那个变量,虽然你是在函数内操作的. 虽然Python提供了这个功能,但是应该尽量避免这样做,因为这使得程序的读者会不清楚这个变量是在哪里定义的.def func():global xprint 'x is', xx = 2print 'Changed local x to', xx = 50func()print 'Value of x is', x执行结果是这样的 x is 50Changed global x to 2Value of x is 2

云霄县17754465244: python 怎么传入列表参数 -
宥裴万祺: 那就在调用参数的时候,给它赋值一个列表def test(ls): print "this is a list"a = [1,2,3]#调用test(a)

云霄县17754465244: 的python程序 怎么调用以及传递参数 -
宥裴万祺: #!/usr/bin/env python# coding: utf-8# import sys import argparse if __name__ == "__main__":parser = argparse.ArgumentParser( description='sum the integers at the command line') parser.add_argument('integers', metavar='int', nargs='+', type...

云霄县17754465244: python的函数怎么使用传递引用的方式? -
宥裴万祺: gt;>> def a(x): b=2 return b就可以了,下面是测试结果>>> f=20>>> a(f)2>>> print a(f)2>>>

云霄县17754465244: Python如何传一个参数到外界程序进行交互 -
宥裴万祺: 你好!可以考虑使用subprocess.Popen 如有疑问,请追问.

云霄县17754465244: python 函数传值问题,新手入门,谢谢. -
宥裴万祺: 右边的图把函数file_path的定义放在get_Excel_Value_S的前面就行了 这个图中对file_path()的调用出现在函数的定义里,这时函数file_path还没有定义 左上图file_path()出现在函数get_Excel_Value_S的代码里,只有当最后一行print语句调用函数时才会执行,这时两个函数都已定义,不会报错.但是函数的定义,参数的默认值是定义后就要确定的,所以右图是在没有定义file_path之前调用了它,会报错

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网