要写python的第一个简单自定义函数,必须使用def关键字定义函数名和括号后的冒号,并确保函数体有正确缩进,例如def greet(): print("你好,python世界!"),调用时直接使用greet()即可执行函数体内的代码,该函数无参数也无返回值,仅完成打印操作,这样实现了代码的封装与复用,避免了重复编写相同代码,提高了程序的可维护性和可读性。
写Python的第一个简单自定义函数,核心就是使用
def
要写一个最基础的Python自定义函数,你只需要掌握
def
()
:
举个例子,我们来写一个打招呼的函数:
立即学习“Python免费学习笔记(深入)”;
def greet(): print("你好,Python世界!") # 调用这个函数 greet()
这个
greet
greet()
如果你想让函数更灵活,比如向不同的人打招呼,你就需要用到参数。参数就像是函数在执行时需要的一些“输入”信息。
def greet_person(name): print(f"你好,{name}!很高兴见到你。") # 调用时传入参数 greet_person("小明") greet_person("李华")
这里,
name
greet_person
name
再进一步,函数不仅可以执行操作,还可以返回一个结果。这就像你问了一个问题,函数思考后给你一个答案。我们用
return
def add_numbers(a, b): sum_result = a + b return sum_result # 返回计算结果 # 调用函数并接收返回值 result = add_numbers(5, 3) print(f"5 加 3 等于:{result}") # 也可以直接打印返回值 print(add_numbers(10, 20))
add_numbers
a
b
return
说实话,刚开始学的时候,我个人觉得写函数有点儿麻烦,直接把代码写在那里不是更直接吗?但很快我就发现,自定义函数简直是编写可维护、可读性高代码的基石。
首先是复用性。想象一下,如果你有十个地方需要执行同样或类似的操作,比如格式化一个日期字符串。你总不能在十个地方都复制粘贴那段代码吧?那太蠢了。写成函数,一次定义,处处调用,省心省力。而且,如果哪天这个操作的逻辑变了,你只需要改函数内部的代码,所有调用它的地方都会自动更新,这效率简直了。
其次是模块化和可读性。把一大段代码拆分成一个个小函数,每个函数只负责完成一个具体、独立的小任务。这就像搭乐高积木,每个积木块都有自己的形状和用途。这样一来,你的主程序看起来就非常清晰,一眼就能看出程序的整体逻辑流程,而不需要深入到每个细节里。当代码量大了,这种结构化简直是救命稻草。别人读你的代码,或者你自己过段时间再看,也能很快理解。
最后,它还能帮助我们避免重复造轮子。很多时候,你遇到的问题,可能别人也遇到过,并且已经写好了现成的函数(比如Python标准库里的那些)。但如果你需要的功能非常特定,或者现有函数不能完全满足需求,那么自定义函数就是最好的选择。它让你能根据自己的实际情况,量身定制解决方案。
参数和返回值,这是函数灵活性的核心所在,也是我个人觉得最有意思的部分。
参数,你可以把它想象成函数执行任务时需要的一些“原材料”或者“指令”。函数可以没有参数(像我们最开始的
greet()
add_numbers(5, 3)
5
a
3
b
add_numbers(b=3, a=5)
def greet(name="陌生人"):
greet()
greet("张三")
返回值,则代表着函数执行任务后的“成果”或者“答案”。一个函数可以没有返回值(默认返回
None
return
return
return
return
return val1, val2, val3
v1, v2, v3 = my_function()
return
return
return
写第一个函数时,遇到一些小坑是很正常的,我自己当年也踩过不少。这些错误通常都比较基础,但足以让你抓狂。
缩进错误 (IndentationError):这是Python的标志性错误之一。Python不使用大括号来定义代码块,而是依赖缩进。函数体内的所有代码行都必须有相同的缩进级别。少一个空格,多一个空格,或者混用空格和Tab,都可能导致
IndentationError
def my_bad_function(): print("我缩进错了") # 这里可能缩进不一致
Python会告诉你
expected an indented block
unindent does not match any outer indentation level
忘记调用函数:你定义了一个很棒的函数,但如果你不调用它,它就永远不会执行。比如你写了
def hello(): print("Hello")
hello()
参数不匹配:当你调用函数时,传入的参数数量或类型与函数定义的不一致。
def add(a, b): return a + b # add(5) # 缺少一个参数,会报TypeError # add("hello", 123) # 类型不匹配,会报TypeError
Python会报
TypeError: add() missing 1 required positional argument: 'b'
TypeError: can only concatenate str (not "int") to str
误解return
print
return
def calculate_and_print(x, y): result = x * y print(f"结果是: {result}") # 只是打印,函数实际返回None def calculate_and_return(x, y): result = x * y return result # 返回结果 val1 = calculate_and_print(2, 3) print(f"val1 的值是: {val1}") # 会输出 "结果是: 6" 和 "val1 的值是: None" val2 = calculate_and_return(2, 3) print(f"val2 的值是: {val2}") # 会输出 "val2 的值是: 6"
calculate_and_print
val1
None
calculate_and_return
val2
变量作用域问题 (Scope):初学者有时会混淆函数内部和外部的变量。函数内部定义的变量(局部变量)只在函数内部有效,函数外部是访问不到的。
def my_scoped_function(): local_var = "我只在函数里" print(local_var) my_scoped_function() # print(local_var) # 这里会报NameError,因为local_var是局部变量
这个概念在后面学习更复杂的程序时会变得非常重要,但现在你只需要知道,函数内部的东西,通常就留在函数内部。
以上就是Python函数如何写第一个简单的自定义函数 Python函数入门级自定义函数的编写技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号