博客
关于我
Python函数
阅读量:140 次
发布时间:2019-02-27

本文共 1595 字,大约阅读时间需要 5 分钟。

Python函数语法

函数定义

函数在Python中通过 def 关键字定义。函数名后面跟着括号内的参数列表,参数之间用逗号分隔。函数体内可以包含任意数目的可执行语句,或者只包含 pass 语句(表示函数为空)。函数可以返回一个值,也可以返回多个值(通过返回多个表达式,结果为元组)。

函数文档注释

为了让函数更易于理解,可以在函数定义时添加文档注释。用三重单引号 ''' 或者 '''' 包围注释内容。

函数体内的返回语句

  • return 语句可以返回一个值或多个值。
  • 如果返回多个值,直接用逗号分隔,返回的值组成一个元组。
  • 返回值可以是变量、表达式或多个操作的结果。

递归函数

递归函数就是在函数体内调用自身。递归需要注意:

  • 递归方向要明确,避免死循环。
  • 递归必须有退出条件,否则会导致无限递归错误。

例如:

def fn(n):  
if n == 5:
return fn(n + 1)
elif n == 6:
return fn(n - 1)
else:
return fn(n + 2) - 2 * fn(n + 1)

参数传递

  • 位置参数:函数调用时按照定义顺序传递参数。
  • 关键字参数:函数调用时根据参数名传递值,无需遵循顺序。
  • 混合使用位置参数和关键字参数:关键字参数必须放在位置参数之后。

例如:

def fn(n1, n2, n3):  
pass
# 正确调用方式:
x = fn(n1=1, n2=3, n3=6)
y = fn(1, 3, 6)
z = fn(n1=1, n2=3, 6)
# 错误:位置参数和关键字参数混用时,关键字参数必须在位置参数之后
w = fn(1, n2=3, 6)

参数默认值

函数定义时可以为某些参数设置默认值。调用函数时可以选择传递参数值,也可以不传递,系统会使用默认值。

例如:

def say_hello(name="大佬", message="欢迎来到我的博客"):  
print(f"{name}, 您好!")
print(f"消息是:{message}")
# 调用方式:
say_hello() # 所有参数使用默认值
say_hello(name="大佬") # 只修改name参数
say_hello("小姐姐", "欢迎一起讨论学习") # 所有参数都传递
say_hello(message="欢迎一起学习Hadoop") # 只修改message参数
错误示例:
```python
say_hello(name="哼、妖怪,", message="学习Python")
say_hello("欢迎学习Python", name="妖怪")
  • 第一个错误:关键字参数必须放在位置参数之后。
  • 第二个错误:如果不全部使用关键字参数,则必须按定义顺序传递参数。

局部函数

在函数内部可以定义局部函数。局部函数可以作为常量或变量使用,或者直接调用。

函数递归

除了调用自身之外,函数还可以调用自身的不同版本。

lambda 表达式

lambda 是一个简洁的表达方式,可以定义一个返回值的函数。

ls = [2, 4, 6, 8]  
s = lambda a: a ** a
print(s) # 输出:2^2=4, 4^4=256, 6^6=46656, 8^8=16777216

注意事项:

  • 在 lambda 表达式中,参数列表和返回值之间用冒号分隔。
  • 如果有多个参数,参数之间用逗号分隔。

总结:

Python 的函数语法简单易学,但在实际开发中需要注意参数传递、递归的正确使用以及文档注释的规范性。通过合理使用函数、递归和 lambda,可以提升代码的可读性和效率。

转载地址:http://outb.baihongyu.com/

你可能感兴趣的文章
Objective-C实现all permutations所有排列算法(附完整源码)
查看>>
Objective-C实现all subsequences所有子序列算法(附完整源码)
查看>>
Objective-C实现AlphaNumericalSort字母数字排序算法(附完整源码)
查看>>
Objective-C实现alternate disjoint set不相交集算法(附完整源码)
查看>>
Objective-C实现alternative list arrange备选列表排列算法(附完整源码)
查看>>
Objective-C实现An Armstrong number阿姆斯特朗数算法(附完整源码)
查看>>
Objective-C实现anagrams字谜算法(附完整源码)
查看>>
Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
查看>>
Objective-C实现area under curve曲线下面积算法(附完整源码)
查看>>
Objective-C实现argmax函数功能(附完整源码)
查看>>
Objective-C实现arithmetic算术算法(附完整源码)
查看>>
Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
查看>>
Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
查看>>
Objective-C实现atoi函数功能(附完整源码)
查看>>
Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
查看>>
Objective-C实现average mean平均数算法(附完整源码)
查看>>
Objective-C实现average median平均中位数算法(附完整源码)
查看>>
Objective-C实现average mode平均模式算法(附完整源码)
查看>>
Objective-C实现avl 树算法(附完整源码)
查看>>
Objective-C实现AvlTree树算法(附完整源码)
查看>>