python基础(七)----函数与参数

2018-03-08  本文已影响0人  躺在稻田里的小白菜

一.函数的定义

函数是组织好的,可重复使用的,功能集中单一的代码段。
函数的定义规则:

def 函数名( 参数):
   "函数文档字符串"

     函数内容

   return [表达式]

二. 函数体与返回值

  1. 函数体

函数体开始要空4格,如果想定义一个什么事也不做的空函数,可以用pass语句占位。如果不使用pass占位会报错。

def func():
    pass
  1. 返回值
def func():
    a=1
    b=2
    return a,b

m,n=func()

其实,本质上讲Python函数并没有返回多个值,而是返回一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

三.参数

1.Python函数的参数种类

Python函数的参数类型一共有五种,分别是:
位置参数
默认参数
可变参数
关键字参数

  1. 位置参数
    最常见的参数,使用位置参数时,传参的顺序数量必须和声明完全一致。
def p(name,age):
    print name
    print age
    return

p('yoyo',12)
  1. 默认参数(parameter=)
    函数声明的时候,可以给参数设置默认值。调用时,如果不传递此参数,会使用默认值,默认参数一定要放在位置参数后面
def p(name,age=12):
    print name
    print age
    return

p('yoyo')
  1. 可变参数
    定义函数时,在参数前面加一个※,表示这个参数是数量可变的,调用时该参数可以接受任意多个值。可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
def calculate(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

s=calculate(1,2,3,4)

如果已经有一个list或者tuple,要调用一个可变参数怎么办?Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

>>> nums = [1, 2, 3]
>>> calc(*nums)
14
  1. 关键字参数
    关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

  1. 命名关键字参数
    和关键字参数不同,命名关键字参数需要一个特殊分隔符※,※后面的参数被视为命名关键字参数。
    调用方式如下:
def person(name, age, *, city, job):
    print(name, age, city, job)

>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer

命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:

>>> person('Jack', 24, 'Beijing', 'Engineer')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: person() takes 2 positional arguments but 4 were give

四. 函数参数中的引用

回忆上节中,我们介绍Python中所有变量都是引用,那么将实参数据传递给形参的过程,本质上就是让形参指向实参的引用对象。

参考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888

上一篇 下一篇

猜你喜欢

热点阅读