【复制粘贴即可运行】Python函数创建大师课:从def基础到高级应用
要在电脑上通过命令提示符或 PowerShell 运行 Python,需要先下载并安装 Python。
如果你还没有安装,请参考Python安装与开发环境配置一文来完成安装。
在制作网站或开发应用程序时,你是否经常遇到这样的情况:“咦,这段代码我刚才是不是写过?”……这种情况很常见吧。要轻松解决这种“重复劳动”,我们今天介绍的Python“函数”就能派上用场。
本文旨在让编程初学者也能安心学习,将通过大量示例代码,从Python函数的基本创建方法到便捷的高级技巧进行解说。关键词是“复制粘贴即可运行”。让我们先把复杂的理论放一边,首先体验一下“自己写的代码成功运行!”的乐趣吧!
到底什么是Python的“函数”?
要形象地理解函数,把它想象成“自动售货机”可能是最简单的。
- 投入钱币(参数),按下按钮(调用函数),然后……
- 饮料就会出来(返回值)
就像这样,函数就是“将特定工作(处理)打包在一起的东西”。一旦创建好,之后就可以像按按钮一样多次调用它来完成同样的工作。这样做的好处是代码更短、更简洁,修改起来也更方便。
在Python中,我们使用名为def的命令语句(def语句)来创建函数。那么,我们马上来看看具体的创建方法吧!
【基础篇】Python函数的创建与使用
首先从最基础的开始。让我们来创建一个既没有参数也没有返回值的最简单的函数。
1. 基本语法:使用def定义函数
创建函数时,以def 函数名():的形式开头,下一行开始通过缩进(空出几个格)来编写处理内容。这里,我们来创建一个只显示“你好!”的简单函数say_hello。
# 1. 定义函数
def say_hello():
print("你好!")
# 2. 调用函数
say_hello()
运行结果:
你好!
重点在于,仅仅定义(创建)了函数是不会发生任何事情的。只有像say_hello()这样写出函数名并加上括号,函数才会被调用,内部的处理才会执行。
2. 试着使用参数
接下来,让我们试用一下相当于自动售货机中“钱币”的“参数”。通过使用参数,可以从外部向函数传递信息,从而改变处理内容。
这里,我们创建一个根据给定的名字返回问候语的函数greet。像def greet(name):这样,在括号中放入变量名(本例中为name),它就成为了参数。
# 定义一个接收参数的函数
def greet(name):
print(f"你好,{name}!")
# 调用函数时,传递具体的值作为参数
greet("小明")
greet("小红")
运行结果:
你好,小明!
你好,小红!
就像这样,只需改变作为参数传递的值,同一个函数就能灵活地改变结果。
3. 通过返回值获取结果
这次轮到相当于自动售货机“饮料”的“返回值”了。当你想将函数内计算的结果等返回给函数的调用者时,就会使用它。要返回一个值,我们使用return语句。
让我们创建一个接收两个数值并返回它们之和的add函数吧。
# 接收两个参数并返回其和的函数
def add(a, b):
total = a + b
return total # 使用return语句返回结果
# 调用函数,并将返回值保存在变量result中
result = add(5, 3)
print(f"5 + 3 的计算结果是 {result}。")
运行结果:
5 + 3 的计算结果是 8。
当add(5, 3)被执行时,函数内部会计算total = 8,然后这个值8会通过return返回给函数的调用者。接着,返回的8被赋值给变量result。
通过使用return而不是直接用print()显示,计算结果可以被用于进一步的处理,这非常方便。
【应用篇】更便捷的函数使用方法
掌握了基础之后,让我们来看看更深入的应用方法。掌握了这些,你就能写出更灵活、更高效的代码。
1. 默认参数:没有参数也没关系!
在调用函数时,有时我们希望可以省略某些参数。在这种情况下,“默认参数”就非常方便了。我们可以像def 函数名(参数名="默认值"):这样,预先设定好初始值。
# 为第二个参数lang设置默认值 "zh"
def greet_language(name, lang="zh"):
if lang == "ja":
message = f"{name}さん、こんにちは!" # 日语:你好,{name}!
elif lang == "en":
message = f"Hello, {name}!"
elif lang == "zh":
message = f"你好,{name}!"
else:
message = "未指定语言。"
return message
# 省略第二个参数(将使用默认值 "zh")
print(greet_language("王伟"))
# 指定第二个参数
print(greet_language("John", lang="en"))
运行结果:
你好,王伟!
Hello, John!
像greet_language("王伟")这样省略参数时,系统会自动将其作为lang="zh"处理,因此会输出中文问候语。非常方便吧!
2. 关键字参数:不担心参数顺序
当参数变多时,记住它们的顺序会变得很麻烦。使用“关键字参数”,你可以通过参数名=值的形式来指定,因此不必担心顺序问题。
def create_user_profile(name, age, country):
return f"姓名: {name}, 年龄: {age}岁, 国家: {country}"
# 按顺序指定参数
profile1 = create_user_profile("张伟", 30, "中国")
print(profile1)
# 使用关键字参数并调换顺序指定
profile2 = create_user_profile(country="美国", name="Emily", age=25)
print(profile2)
运行结果:
姓名: 张伟, 年龄: 30岁, 国家: 中国
姓名: Emily, 年龄: 25岁, 国家: 美国
使用关键字参数的另一个好处是,代码的可读性会提高,因为哪个值传递给了哪个参数一目了然。
【体验角】在浏览器中运行的Python函数
最后,各位Web开发者们,让我们来尝试仅用大家熟悉的HTML文件来运行Python吧!
完整复制下面的代码,将其保存为index.html之类的文件名,然后在浏览器中打开它。一个能根据你输入的文字返回问候语的简单Web应用就完成了。
这是使用一种名为PyScript的技术,在HTML文件中直接运行Python代码。无需任何复杂的设置。请务必体验一下“复制粘贴即可运行”的乐趣!
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>在浏览器中体验Python函数!</title>
<!-- 加载 PyScript -->
<link rel="stylesheet" href="https://pyscript.net/releases/2024.1.1/core.css">
<script type="module" src="https://pyscript.net/releases/2024.1.1/core.js"></script>
<style>
body { font-family: sans-serif; padding: 2em; line-height: 1.6; }
input { padding: 8px; font-size: 1em; }
button { padding: 8px 16px; font-size: 1em; cursor: pointer; }
#output { margin-top: 1em; font-weight: bold; font-size: 1.2em; color: #2c3e50; }
</style>
</head>
<body>
<h1>问候语生成器</h1>
<p>请输入您的名字并点击按钮。</p>
<input id="user-name" type="text" placeholder="输入名字...">
<button py-click="generate_greeting">生成问候语</button>
<div id="output"></div>
<py-script>
from pyscript import document
# ★在这里定义Python函数★
def create_greeting_message(name):
# 如果名字为空,则返回默认问候语
if not name:
return "请输入您的名字!"
# 如果有名字,则返回使用该名字的问候语
return f"欢迎来到网络世界,{name}!"
# 按钮被点击时执行的函数
def generate_greeting(event):
# 从input元素获取用户输入
input_element = document.querySelector("#user-name")
user_name = input_element.value
# 使用上面定义的函数创建问候消息
message = create_greeting_message(user_name)
# 将消息写入用于显示的div元素中
output_div = document.querySelector("#output")
output_div.innerText = message
</py-script>
</body>
</html>
使用函数时应注意的事项
函数非常强大,但为了正确使用,有几点需要注意。
-
缩进是生命!
在Python中,缩进(indentation)代表代码块。def之后的处理必须始终使用相同数量的空格(通常是4个)进行缩进。如果缩进不一致,会导致错误。 -
取一个易于理解的函数名
函数名应该能够让人一眼就看出该函数“做什么”。例如,包含动词的名字如add或create_user_profile是常见的做法。不好的例子是像function1或proc这样看不出作用的名字。 -
注意变量的作用域
在函数内部定义的变量(局部变量)不能在函数外部使用。这是一个重要的机制,可以防止函数无意中影响到外部。
让我们来看一个变量作用域的例子。
def my_function():
# local_variable 是一个只在 my_function 内部有效的局部变量
local_variable = "这是函数内部的变量"
print(local_variable)
# 执行函数
my_function()
# 尝试从函数外部访问 local_variable 会导致错误
# print(local_variable) # NameError: name 'local_variable' is not defined
运行结果:
这是函数内部的变量
如果你去掉最后一行print(local_variable)的注释并运行它,就会发生NameError错误。这是因为local_variable在函数外部是不存在的。这种“影响范围受限”的特性,使得代码更安全、更易于管理。
总结:掌握函数,迈向编程新高度!
这次,我们通过大量可复制粘贴运行的代码,学习了从Python函数的基础到应用。
- 函数使用
def来定义 - 使用参数可以向函数传递信息
- 使用
return可以从函数获取结果 - 通过默认参数和关键字参数可以更方便地使用函数
函数是编程中最基本、最重要的概念之一。它让你不再需要重复编写相同的处理,并极大地提高了代码的整体可读性。
首先,请尝试修改本文中的示例代码,创建你自己的函数。体验“成功运行”是进步的最快途径。
掌握了函数之后,要不要学习一下如何批量处理数据呢?下面的文章详细解说了Python中最常用的数据结构——“列表”和“字典”。