Python学习笔记——函数

一、函数基础

  • 函数代码块以 def关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

二、定义函数

2.1 函数结构

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

def 函数名(参数列表):
    函数体
	return 结果
2.2 函数调用

采用import模块,使用方式为import fun,无.py

2.3 返回值

return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式,不带参数值的return语句返回None。
注意 当使用return返回多个值时,实际上返回的是tuple

2.4 匿名函数

python 使用 lambda 来创建匿名函数,所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression

# 例子
sum = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))

三、函数参数

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

3.1 默认参数

多个默认参数下,可以不按顺序赋值,只需parmas = val即可。
注意:默认参数必须指向不变对象,不然会导致在重复调用函数后,默认参数的值不断变化。

3.2 可变参数

可变参数就是传入的参数个数是可变的,实现方式有一下两种。

  1. list或者tuple方式传入。
  • 函数
def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
  • 调用
calc([1, 2, 3])
calc((1, 3, 5, 7))
  1. 将函数参数改为可变参数,方式为在参数前加*即可,此时函数内部接收到是tuple
  • 函数
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
  • 调用
calc(1, 2, 3)
nums = [1, 2, 3]
calc(*nums)
3.3 关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

  • 函数
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
  • 调用
>>> person('Michael', 30)
name: Michael age: 30 other: {}

>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}

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

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

注意:最后一种方式是把dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dictkw获得的dictextra的一份拷贝,对kw的改动不会影响到函数外的extra

3.4 命名关键字参数

命名关键字参数用于传入有限制的关键字参数,命名关键字参数必须传入参数名,

  • 函数
def person(name, age, *, city, job):
    print(name, age, city, job)

命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

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

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了。

  • 函数
def person(name, age, *args, city, job):
    print(name, age, args, city, job)

整理自
菜鸟教程
廖雪峰的官方网站

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值