python 函数传参,python函数传参的三种方式

  python 函数传参,python函数传参的三种方式

  最近写Python函数的函数,写错了一些。所以本文主要和大家一起整理一下Python函数的参数传递机制,有兴趣的朋友可以和边肖一起学习。

  00-1010一、最简单的函数(无返回值,无参数)二。最简单的函数(有返回值,无参数)III。一个参数(无默认值)四。多参数(无默认值)五、参数设置默认值(一个参数)六。参数设置默认值(多参数)七。一些参数使用默认值VIII。args XII的位置使用,高级:**kwargs XIII,高级:*args与形参一起使用十四,高级:**kwargs与形参一起使用十五,高级:形参*args **kwargs与形参一起使用大家好,我是Peter~

  最近写Python函数的函数,写错了一些。本文主要是梳理Python函数的参数传递机制。主要内容包括:

  

目录

  def hello_python():

  打印(你好python!)

  Hello_python() #直接调用

  输出:

  你好python!

  

一、最简单的函数(无返回值、参数)

  def hello_python():

  data=你好python!

  返回数据#数据是返回值

  hello_python()

  输出:

  “你好,蟒蛇,”

  

二、最简单的函数(带返回值、无参数)

  def hello(数据):

  结果=你好数据

  回送结果

  你好( python )

  输出:

  “你好,python”

  传入另一个值:

  你好( java )

  输出:

  “你好,java”

  您也可以在内部修改参数信息:

  def hello_name(姓名):

  result=Hello name.title()!

  回送结果

  你好名字(汤姆)

  “你好,汤姆,”

  你好名字(杰克)

  你好,杰克!

  

三、带一个参数(无默认值)

  定义信息(姓名、年龄):

  Data=我叫 name.title(),今年 str(age)岁

  返回数据

  信息(“汤姆”,23)

  我叫汤姆,今年23岁。

  信息(“插孔”,18)

  我叫杰克,今年18岁。

  blockquote>

  

  

五、参数设置默认值(一个参数)

  

def hello_name(name="Peter"):

   result = "Hello " + name

   return result

  

  如果不给参数具体的值,就使用默认值

  

hello_name() 

  

  

'Hello Peter'

  

  给参数一个实际的值,比如下面的例子中Tom就是实际的值;这就是常说的实参

  

hello_name(name="Tom") 

  

  

'Hello Tom'

  

  

  

六、参数设置默认值(多个参数)

  

def information(name="Peter", age=20):

   data = "我是" + name + ", 今年" + str(age) + "岁"

   return data

  

  1、全部使用默认值:

  

information()

  

  

'我是Peter, 今年20岁'

  

  2、全部传入实际的值:

  

information(name="Tom", age=27)

  

  

'我是Tom, 今年27岁'

  

  3、只传入部分参数的实际值;未传入的使用默认值:

  

information(name="Tom")

  

  

'我是Tom, 今年20岁'

  

  

information(age=18)

  

  

'我是Peter, 今年18岁'

  

  

  

七、部分参数使用默认值

  默认值的参数一定要放在最后面;具有默认值的参数一定要放在最后面

  

def information(name, age=20):

   data = "我是" + name + ", 今年" + str(age) + "岁"

   return data

  

  

information("Peter") # age默认使用20

  

  

'我是Peter, 今年20岁'

  

  

information(name="Peter")

  

  

'我是Peter, 今年20岁'

  

  

information("Peter", age=18)

  

  

'我是Peter, 今年18岁'

  

  下面的方式直接报错:

  

information(age=18, "Peter")
File "<ipython-input-26-2d03cd04a05a>", line 1
information(age=18, "Peter")
^
SyntaxError: positional argument follows keyword argument

  

  

information(age=18, name="Peter") # age默认使用20

  

  

'我是Peter, 今年18岁'

  

  重点:在函数必须先列出没有默认值的形参,再列出有默认值的形参:

  

def information(age=20, name):

   data = "我是" + name + ", 今年" + str(age) + "岁"

   return data

  

  

File "<ipython-input-28-d36363c3194c>", line 1
def information(age=20, name):
^
SyntaxError: non-default argument follows default argument

  

  如何理解有默认值的参数一定要放在最后面?

  下面自定义个get_name的函数,传入第一个、最后一个和中间的名字,但是并不是每个人都有中间名字:

  

def get_name(first_name, last_name, middle_name=):

   if middle_name: # 如果存在中间名字

   name = first_name + middle_name + last_name

   else:

   name = first_name + last_name

   return name

  

  

get_name(first_name="张", last_name="飞", middle_name=)

  

  

'张飞'

  

  

get_name(first_name="孙", last_name="空", middle_name=悟)

  

  

'孙悟空'

  

  如果不传递middle_name的结果肯定不是我们想要的:

  

get_name(first_name="孙", last_name="空")

  

  

'孙空'

  

  

  

八、位置实参

  

def get_information(name, age):

   data = "我是" + name + ", 今年" + str(age) + "岁"

   return data

  

  

get_information("Tom", 20)

  

  

'我是Tom, 今年20岁'

  

  

get_information("20","Tom") # 一定要按照原来形参的顺序传递

  

  

'我是20, 今年Tom岁'

  

  上面的结果肯定不是我们想要的

  

  

九、关键字实参

  当使用关键字传递实参的时候,和顺序无关:

  

get_information(name="Tom", age=20)

  

  

'我是Tom, 今年20岁'

  

  

get_information(age=20, name="Tom")

  

  

'我是Tom, 今年20岁'

  

  

  

十、位置实参和关键字实参混合使用

  

get_information("Tom", age=20)

  

  

'我是Tom, 今年20岁'

  

  在使用的时候还是要按照原函数中的顺序,否则报错:

  

get_information(age=20,"Tom")

  

  

File "<ipython-input-39-bc20bc544493>", line 1
get_information(age=20,"Tom")
^
SyntaxError: positional argument follows keyword argument

  

  

  

十一、进阶:*args使用

  有时候我们实现并不知道函数需要接受多少个参数,这个时候可以通过*args或者**kwargs的用法来收集任意数量的参数。

  先介绍*args的使用。假设我们想把一个班级中每个同学的身高都变成以米为单位,即除以100:

  

def height(*args):

   data = args

   return data

  

  

height()

  

  默认情况下函数收集到的是一个空元组:

  

()

  

  

height(178)

  

  当传入数据的时候,以元组的形式表示:

  

(178,)

  

  

height(178,189)

  

  

(178, 189)

  

  

def height(*args):

   for data in args: # 对args中的元素进行循环操作

   print("身高是: {}m".format(data / 100))

  

  

height(189,180,167,172) # 调用

  

  

身高是: 1.89m
身高是: 1.8m
身高是: 1.67m
身高是: 1.72m

  

  

  

十二、进阶:**kwargs使用

  **kwargs允许将不定长度的键值对,作为参数传递给一个函数

  

def information(**kwargs):

   data = kwargs

   print(data)

  

  默认情况下收集的是字典:

  

 information(name="Peter")

  

  

{'name': 'Peter'}

  

  

information(name="Peter", age=23)

  

  

{'name': 'Peter', 'age': 23}

  

  

def information(**kwargs):

   for k, v in kwargs.items():

   print("{0} == {1}".format(k,v))

  

  

information(name="Peter")

  

  

name == Peter

  

  

information(name="Peter", age=23)

  

  

name == Peter
age == 23

  

  

information(name="Peter", age=23, height=175)

  

  

name == Peter
age == 23
height == 175

  

  

  

十三、进阶:*args 和形参连用

  

def fun(x, *args):

   print("x:", x)

   print("args:", args)

  

  

fun(1)

  

  

x: 1
args: ()

  

  

fun(1,2)

  

  

x: 1
args: (2,)

  

  

fun(1,2,3,4)

  

  

x: 1
args: (2, 3, 4)

  

  

fun(1,2,3,4,"Peter")

  

  

x: 1
args: (2, 3, 4, 'Peter')

  

  

  

十四、进阶:**kwargs 和形参连用

  

def fun(x, **kwargs):

   print("x:", x)

   print("kwargs:", kwargs)

  

  

fun(1)

  

  

x: 1
kwargs: {}

  

  

fun(1,name="Peter")

  

  

x: 1
kwargs: {'name': 'Peter'}

  

  

fun(1,name="Peter",age=23)

  

  

x: 1
kwargs: {'name': 'Peter', 'age': 23}

  

  

  

十五、进阶:形参+*args+**kwargs连用

  

def fun(x, *args, **kwargs):

   print("x:", x)

   print("args:", args)

   print("kwargs:", kwargs)

  

  

fun(1)

  

  

x: 1
args: ()
kwargs: {}

  

  

fun(1,2,3)

  

  

x: 1
args: (2, 3)
kwargs: {}

  

  

fun(1,name="Peter",age=23)

  

  

x: 1
args: ()
kwargs: {'name': 'Peter', 'age': 23}

  

  

fun(1,2,3,name="Peter",age=23)

  

  

x: 1
args: (2, 3)
kwargs: {'name': 'Peter', 'age': 23}
kwargs = {"name":"Peter","age":23}

  

  

fun(1,2,3,**kwargs)

  

  

x: 1
args: (2, 3)
kwargs: {'name': 'Peter', 'age': 23}

  

  以上就是一文搞懂Python的函数传参机制的详细内容,更多关于Python函数传参机制的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: