本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢!
文章目录
- 一、前言
- 二、函数的定义与调用
- 三、函数参数
- 3.1 位置参数
- 3.2 默认参数
- 3.3 可变数量参数(或不定长参数)
- 3.4 关键字参数
- 四、函数的返回值return 语句
- 五、函数作用域
- 六、函数的高级用法
- 6.1 Lambda函数
- 6.2 嵌套函数和闭包
- 6.3 文档字符串
- 七、总结
一、前言
Python是一种功能强大的编程语言,其函数特性极大地增强了代码的可重用性和模块化设计。函数不仅可以帮助开发者组织和简化代码,还能通过参数传递和返回值机制实现灵活的交互。
本文将详细介绍Python函数的定义、调用、参数类型以及一些高级用法,帮助读者全面掌握Python函数的运用。
-
什么是Python?
Python是由荷兰人吉多·范罗苏姆于1990年初设计的一门高级编程语言,该语言应用领域非常广泛,尤其在数据科学、人工智能、游戏开发等领域,它已经成为最受欢迎的程序设计语言之一,非常适合新手学习。
Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/turtle.html#turtle-methods
-
Python语言有哪些特点?
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.丰富的库:Python的最大的优势之一具有丰富的标准库,并且跨平台的,在UNIX,Windows和Mac兼容很好。
5.面向对象:Python支持面向对象编程,在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
二、函数的定义与调用
在Python中,使用def关键字定义函数。函数定义包括函数名、函数参数、函数体以及返回值。
下面是一个简单的函数定义示例:
def greet(name):
"""打印问候消息"""
print(f"Hello, {name}!")
这个函数名为greet,它接受一个参数name,并在调用时打印一条问候消息。调用该函数的方式如下:
greet("Alice") # 输出: Hello, Alice!
三、函数参数
Python中的函数参数非常灵活,可以包括位置参数、默认参数、可变参数和关键字参数。
3.1 位置参数
位置参数,即调用函数时,必须按照各个参数的对应位置,顺序的传递参数。
例如:
def add(a, b):
return a + b
result = add(3, 4) # 输出: 7
3.2 默认参数
默认参数,如果在调用函数时没有传递该参数的值,则可以使用默认值。
例如,如下如果不传入参数,则会使用默认参数name。
def greet(name="World"):
return f"Hello, {name}!"
print(greet()) # 输出: Hello, World!
print(greet("Alice")) # 输出: Hello, Alice!
3.3 可变数量参数(或不定长参数)
可变数量参数,即用于接受的参数,其数量是变化的、不固定的。这些参数被传递为一个元组或列表。
参数前面加星号,表示可变参数,基本语法如下:
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
例如,调用求和函数sum时,分别传入两个参数和三个参数:
def sum(*numbers):
return sum(numbers)
result = sum(1, 2) # 传递两个参数,输出: 3
print ("result :",result)
result = sum(1, 2, 3) # 传递三个参数,输出: 6
print ("result :",result)
加了一个星号 ***** 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。例如:
#!/usr/bin/python3
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
# 调用printinfo 函数
printinfo( 70, 60, 50 )
输出:
70
(60, 50) # 以元组类型导入
加了两个星号 ** 的参数会以字典的形式导入。例如:
#!/usr/bin/python3
# 可写函数说明
def printinfo( arg1, **vardict ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vardict)
# 调用printinfo 函数
printinfo(1, a=2,b=3)
输出:
1
{'a': 2, 'b': 3} # 以字典类型导入
3.4 关键字参数
关键字参数,即用于接受指定名称的参数。这些参数被传递为字典类型。
关键字参数,格式为:参数名1=参数值1,参数名2=参数值2。例如:
def find_word(text, word):
return text.find(word)
result = find_word(text='Hello, world!', word='world') # 输出: 7
PS:使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
四、函数的返回值return 语句
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。
例如:
#!/usr/bin/python3
# 可写函数说明
def sum( arg1, arg2 ):
# 返回2个参数的和."
total = arg1 + arg2
print ("函数内 : ", total)
return total
# 调用sum函数
total = sum( 10, 20 )
print ("函数外 : ", total)
五、函数作用域
函数作用域,即函数内部定义的变量是局部变量,函数外部定义的变量是全局变量。
例如:
x = 10 # 全局变量
def foo():
x = 5 # 局部变量
print(f"局部变量 x: {x}")
foo() # 输出: 局部变量 x: 5
print(f"全局变量 x: {x}") # 输出: 全局变量 x: 10
局部变量的作用范围仅限于该函数内部,在函数外部尝试访问局部变量会导致错误,例如:
def my_function():
local_variable = "I am local"
print(local_variable)
my_function()
# 输出: I am local
# 在函数外部尝试访问局部变量会导致错误
# print(local_variable)
在函数外部声明的变量称为全局变量。全局变量的作用范围跨越多个函数,例如:
global_variable = "I am global"
def my_function():
print(global_variable)
my_function()
# 输出: I am global
如果要在函数内部修改全局变量,需要使用global关键字进行声明,例如:
global_variable = "I am global"
def my_function():
global global_variable
global_variable = "I have been modified"
my_function()
print(global_variable)
# 输出: I have been modified
在函数内部创建的变量,默认为局部变量。如果要在函数内部创建一个全局变量,需要使用global关键字进行声明。
例如:
def my_function():
global new_global_variable
new_global_variable = "I am a new global"
my_function()
print(new_global_variable)
# Output: I am a new global
总之,局部变量只在其被声明的函数内部有效。全局变量可以在多个函数中共享,但要在函数内部修改全局变量,需要使用global关键字。
六、函数的高级用法
6.1 Lambda函数
Lambda函数是一种匿名函数,通常用于短小的函数定义,而不需要使用def关键字显式地定义函数。
Lambda函数的语法如下:
lambda arguments: expression
下面是一个使用Lambda函数计算两个数之和的例子:
add = lambda x, y: x + y
result = add(3, 4) # 输出: 7
6.2 嵌套函数和闭包
函数可以嵌套定义,并且内部函数可以访问外部函数的变量。闭包是指内部函数引用了外部函数的变量,并且外部函数返回了这个内部函数。
例如:
def outer():
x = 5
def inner():
print(x)
return inner
closure = outer()
closure() # 输出: 5
6.3 文档字符串
文档字符串(docstring)用于描述函数的用途和参数。使用三重引号(“”")编写文档字符串。
例如:
def greet(name):
"""打印问候消息
参数:
name -- 要问候的人的名字
"""
print(f"Hello, {name}!")
七、总结
Python中的函数是一种非常重要的编程工具,它可以帮助我们组织代码、提高代码的可重用性和可维护性。通过掌握函数的定义、调用、参数、返回值、作用域以及使用技巧等方面的知识,我们可以更好地使用函数来编写高效的Python程序。
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)