Python 函数

🌱Python 函数

函数是一种仅在调用时,运行的代码块。可以将数据(称为参数)传递到函数中,函数可以把数据按照制定的样式作为结果返回。

创建函数

在Python中,使用 def 关键字定义函数,后面跟函数名与括号内的形参列表,函数语句从下一行开始,并且必须缩进。

def my_function():
  print("Hello from a function")

调用函数

如需调用函数,请使用函数名称后跟括号。

def my_function():
  print("Hello from a function")

my_function()

参数

信息可以作为参数传递给函数,参数在函数名后的括号内指定,可以根据需要添加任意数量的参数,只需用逗号分隔即可。

默认参数值

如果我们使用了不带参数的函数,则使用默认值

def my_function(country = "China"):
  print("I am from " + country)

my_function("Sweden")
my_function()

默认值在定义作用域里的函数定义中求值。

i = 5

def f(arg=i):
    print(arg)

i = 6
f()
# 此例输出:5

备注:默认值只计算一次。默认值为列表、字典或类示例等可变对象时,会产生与该规则不同的结果。

# 此例会累积后续调用时传递的参数
def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
print(f(3))
# 输出结果为
[1]
[1, 2]
[1, 2, 3]
def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L
print(f(1))
print(f(2))
print(f(3))
# 输出结果为
[1]
[2]
[3]

关键字参数

还可以使用key=value语法传递参数。参数的顺序无关紧要。函数调用时,关键字参数必须跟在位置参数后面。所有传递的关键字参数必需匹配一个函数接受的参数。不能对用一个参数多次赋值

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)

my_function(child1 = "Phoebe", child2 = "Jennifer", child3 = "Rory")

特殊参数

默认情况下,参数可以按位置或显式关键字传递给 Python 函数。为了让代码易读、高效,最好限制参数的传递方式,这样,开发者只需查看函数定义,即可确定参数项是仅按位置、按位置或关键字,还是仅按关键字传递。

函数定义如下

/和*是可选的。这些符号表明形参如何把参数值传递给函数:位置、位置或关键字、关键字。关键字形参也叫命名形参。

位置或关键字参数

函数定义中未使用/和*时,参数可以按照位置或关键字传递给函数。

def my_func(a):
	print(a)

仅位置参数

特定形参可以标记为 仅限位置 ,仅限位置时,形参的顺序很重要,且这些形参不能用关键字传递。仅限位置形参应放在/(正斜杠)前。/ 用于在逻辑上分隔仅限位置形参与其他形参。

def my_func(a,/):
	print(a)

仅关键字参数

把形参标记为 仅限关键字,表明必须以关键字参数形式传递该形参,应在参数列表中第一个 仅限关键字 形参前添加 *。

def my_func(*,a):
	print(a)

任意参数

如果不知道将传递给函数多少个参数,请在函数定义的参数名称前添加 * ,这样函数将接受一个参数元组,并可以像影帝访问各项。

def my_function(*kids):
  print("The youngest child is " + kids[2])

my_function("Phoebe", "Jennifer", "Rory")

pass语句

函数定义不能为空,但是如果处于某种原因写了无内容的函数定义,请使用pass语句来避免错误。

def myfunction:
  pass

★★★★★★ 递归

lambda表达式

lambda 函数是一种小的匿名函数,可以接受任意数量的参数,但只是有一个表达式。

在语法上,匿名函数只能是单个表达式。在语义上,它只是常规函数定义的语法糖。与嵌套函数定义一样,lambda含糊可以引用包含作用域中的变量。

x = lambda a : a + 10
print(x(5))

编码风格

Python 项目大多都遵循PEP8的风格指南;它推行的编码风格易于阅读、赏心悦目。

  • 缩进,用4个空格,不要用制表符(TAB)
  • 换行,一行不超过79个字符
  • 用空行分隔函数和类,及函数内较大的代码块
  • 最好把注释放到单独一行
  • 使用文档字符串
  • 运算符前后、逗号后要用空格,但不要直接在括号内使用
  • 类和函数命名要一致;按惯例按惯例,命名类用 UpperCamelCase,命名函数与方法用 lowercase_with_underscores。命名方法中第一个参数总是用 self
  • 编写用于国际多语环境的代码时,不要用生僻的编码。Python默认的 UTF-8或纯ASCII可以胜任各种情况。
  • 同理,就算多语阅读、维护代码的可能再小,也不要在标示符中使用非ASCII字符。

文档字符串

文档字符串非常简单,其实直接在函数的第一行写一个字符串就是文档。在第一行写一个单引号或者是双引号就是字符串,但是一般我们会使用三重引号,我们这个长字符串是可以跨行写,这是文档字符串的示例,可以写 函数的作用 函数的参数 ,参数 a 的作用是什么,类型是什么,默认值等等。

备注:Python会抛出未指定的字符串,当成注释。不影响程序运行。

或者说别人可以通过 help 来查看这个描述,或者说直接看源码,这是文档字符串的一个作用,但是不是强制的,最好养成编写文档字符串的一个好习惯,利人利己。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值