欢迎进入Python编程的奇幻世界!在这个课程中,我们将一起探索编程的乐趣,通过生动有趣的方式,培养编程的逻辑思维和创造力,该课程适合有一定基础的中学及以上学生及成年人。
以下是我们课程的大纲:
【Python:趣味编程,探索未来】
目录
- 1. 前言
- 2. 认识我们的“魔法咒语”——函数
-
- 2.1 函数的定义
- 2.2 函数的调用
- 2.3 几个简单的函数定义及调用的小例子
-
- 2.3.1 不带参数及返回值的小例子
- 2.3.2 带参数不带返回值的小例子
- 2.3.3 带参数及返回值的小例子
- 2.4 函数的参数
-
- 2.4.1 不可变参数
- 2.4.1 可变参数
- 2.5 函数的参数类型
-
- 2.5.1 位置参数
- 2.5.2 关键字参数
- 2.5.3 默认参数
- 2.5.3 不定长参数(又名:可变参数)
- 2.5.4 可变的关键字参数
- 3. 神奇的“无名咒语”——Lambda 函数
- 4. 自己变出魔法咒语——递归函数
-
-
-
- 五、让魔法咒语更强大——装饰器
-
-
1. 前言
在当今的编程世界中,Python 凭借其简洁的语法、强大的库支持和广泛的应用领域,成为了许多开发者首选的编程语言。
函数作为编程中的核心概念之一,是组织代码、提高代码复用性和可读性的重要手段。
本文将带你深入了解 Python 中的函数编程,从基础到进阶,帮助你掌握这一关键技能。
2. 认识我们的“魔法咒语”——函数
首先,我们要知道什么是函数。函数就像是一个魔法盒子,你给它一些“材料”(参数),它就能帮你变出你想要的东西(返回值)。但是,这个魔法盒子需要你先告诉它怎么做,这就是编写函数的过程。
2.1 函数的定义
函数的定义格式如下:
def 函数名(参数列表):
函数体
说明:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
- 圆括号之间用于定义参数,可以传入多个参数,参数之间逗号分隔
- 函数内容以冒号 : 起始,内容必须缩进
- 如果有返回值,最后使用 return [表达式] 结束函数;如果没有返回值,return 可以不写 。
2.2 函数的调用
函数的调用可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
- 通过函数名称进行调用
- 不调用,函数不执行
2.3 几个简单的函数定义及调用的小例子
2.3.1 不带参数及返回值的小例子
def hello() :
print("Hello World!")
hello()
结果:
Hello World!
2.3.2 带参数不带返回值的小例子
def greet(name):
print(f"Hello, {
name}!")
greet("Alice")
结果:
Hello, Alice!
2.3.3 带参数及返回值的小例子
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
结果:
5
2.4 函数的参数
形参:形参是函数定义中用于接收传入值的变量
实参:实参是在函数调用时实际传递给函数的值或变量。
如:
def greet(name): # 定义函数greet, name为形式参数
print(f"Hello, {
name}!")
greet("Alice") # 调用函数,"Alice"为实际参数
2.4.1 不可变参数
在Python中,不可变参数(immutable parameters)指的是那些一旦赋值后,其值就不能被改变的参数。
Python中的不可变类型包括整数(int)、浮点数(float)、字符串(str)和元组(tuple)等。
当你将一个不可变对象作为参数传递给一个函数时,函数内部接收到的实际上是这个对象的一个引用(或者说是指针)。但是,由于这个对象是不可变的,所以你不能在函数内部改变这个对象的值。如果你尝试这样做,Python会创建一个新的对象,而不是修改原来的对象。
下面是一个简单的例子来说明不可变参数的行为:
def modify_string(s):
s = "new string" # 这里并没有改变原来的字符串,而是创建了一个新的字符串对象
original_string = "old string"
modify_string(original_string)
print(original_string) # 输出:old string,原来的字符串没有被改变
在这个例子中,尽管我们在函数modify_string
内部给参数s
赋了一个新的字符串值,但是这个改变并没有影响到函数外部的original_string
变量。这是因为字符串是不可变的,所以s = "new string"
这行代码实际上是在内存中创建了一个新的字符串对象,并将s
指向了这个新对象,而原来的字符串对象(“old string”)仍然保持不变。
2.4.1 可变参数
在Python中,可变参数(mutable parameters)指的是那些一旦赋值后,其值可以被改变的参数。与不可变参数(如整数、浮点数、字符串和元组)不同,可变参数允许在函数内部进行修改,并且这些修改会影响到函数外部的原始对象。
Python中的可变类型主要包括列表(list)、字典(dict)、集合(set)以及用户自定义的类实例等。当这些可变对象作为参数传递给函数时,函数内部接收到的是这个对象的引用(或指针),因此可以在函数内部直接修改这个对象的内容或结构。
下面是一个简单的例子来说明可变参数的行为:
def modify_list(lst):
lst.append(4) # 修改列表的内容
original_list = [1, 2, 3]
modify_list(original_list)
print(original_list) # 输出:[1, 2, 3, 4],原来的列表被改变了
在这个例子中,我们在函数modify_list
内部使用append
方法修改了列表lst
的内容。由于列表是可变的,所以这个修改影响到了函数外部的original_list
变量。
需要注意的是,虽然你可以在函数内部修改可变对象的内容,但是如果你尝试将函数内部的可变对象重新指向一个新的对象(例如通过赋值操作),那么这种改变不会影响到函数外部的原始对象。这是因为函数内部的可变参数仍然只是一个引用,当你重新赋值时,你只是让这个引用指向了一个新的对象