想写出“干净到发光”的Python?先学会这几招

60 阅读5分钟

一、为什么学到现在,你的Python越来越乱?

回想一下你第一次写Python程序的样子。那时候,学会了变量、数学运算、列表、字典,甚至还能做输入输出、循环控制。你写的小游戏也能跑起来——比如猜数字、打印乘法口诀。

可是,慢慢地你发现一个问题: 程序越写越长,逻辑越来越复杂,你自己看一眼都头大,更别说几天后回头看,简直一脸懵——“这行是干嘛的来着?”

如果你有这种感觉,别慌,这很正常。写程序就像盖房子,一开始堆砖没问题,可房子大了,你必须学会分区、分层,否则最后变成一堆乱搭的积木。

Python给了我们三个法宝,帮你把复杂程序拆得清清楚楚

  1. 函数(Function)  —— 把常用的代码封装成“积木”,随时拿来用。
  2. 对象(Object)  —— 把数据和方法打包成一个整体。
  3. 模块(Module)  —— 把不同功能的代码装进不同文件。

今天,我们重点聊第一个——函数。学会它,你的代码不但好看,还能复用,省时省力。


二、函数:程序的乐高积木

先不谈技术名词,把函数想象成一个“工具包”。 你在生活中用的剪刀、螺丝刀,就是“函数”——它们能帮你完成特定任务,而且可以反复使用。

在Python里,你用 def 来定义一个函数,再用“函数名+括号”来调用它。

比如,我们之前写过99乘法口诀,如果不封装成函数,每次都得复制粘贴那一堆循环代码;而封装后,只要一句 print_multiplication_table(),全搞定。

# 打印99乘法口诀
def print_multiplication_table():
    for i in range(110):  # 外层循环控制行数
        for j in range(1, i + 1):  # 内层循环控制每行的乘法式数量
            print(f"{j}*{i}={i*j}", end="\t")
        print()

# 调用函数
print_multiplication_table()

是不是立刻整洁了? 而且,下次你想打印5以内的乘法口诀,只需加个参数,就能做到。


三、让函数更聪明——参数

1. 单个参数

参数的作用,就是在调用函数时,告诉它“这次要怎么干活”。

比如,我们想要一个“自适应”的乘法口诀函数,可以这样写:

# 打印n以内的乘法口诀
def print_multiplication_table(n):
    print('print multiplication table within:', n)
    for i in range(1, n):
        for j in range(1, i + 1):
            print(f"{j}*{i}={i*j}", end="\t")
        print()

print_multiplication_table(5)
print_multiplication_table(8)

一次传5,打印5以内;传8,就打8以内。灵活得很。

2. 多个参数

如果你的函数需要两个甚至多个信息,可以这样:` def add(a, b):  # a 和 b 是形参     return a + b

result = add(3, 5)  # 3 和 5 是实参 `

记住,形参是函数定义时写的变量名,是占位符;实参是调用时传入的真实数据。

3. 参数太多怎么办?

如果参数超过5个,可读性会很差。这时可以用列表或字典,把它们打包后一次性传进去。 比如,你想传10个数字,不如放进一个列表,一次性传过去,代码清爽多了。


四、让函数有“回信”——返回值

到目前为止,函数都是帮你做事,但它还可以把结果“回寄”给你——这就是返回值(return)。` def calculateTax(price, tax_rate):     taxTotal = price + (price * tax_rate)     return taxTotal

totalPrice = calculateTax(7.99, 0.06) print(totalPrice)  # 8.4694 `

返回值的好处是:你可以直接拿来用,不必在函数里就输出。 比如,可以在不同地方用这个值计算总额、打折、记录日志……


五、作用域:变量的地盘

作用域(scope)决定了变量能在哪用。

  • 局部变量:函数里定义的,只在函数内部有效。
  • 全局变量:函数外部定义的,整个程序都能用。

但是要注意,如果你在函数里用和全局变量同名的变量,Python会优先创建一个新的局部变量,不会改到外面的值。 如果确实要改全局变量,可以用 global 关键字,但不建议滥用,否则调试起来很麻烦。


六、实战练习

说了这么多,咱们来点实战——用函数封装常见小项目。

1. 猜数字游戏

import random  
def guess_number(start, end):     
secret = random.randint(start, end)     
print('数字范围:start=', start, 'end=', end)     
while True:         
user = int(input("输入您猜测的数字: "))         
if user == secret:             
print("恭喜猜对!")             
break         
print("太大了" if user > secret else "太小了")  
guess_number(1100)  

2. 五角星绘图

import turtle
def star(size, color):     
t = turtle.Turtle()     
t.color(color)     
for _ in range(5):         
t.forward(size)         
t.right(144)  
star(50"red") 
star(100"blue") 
turtle.done()  `

3. 用大写字母打印名字

import time  
def print_daisy():     
letters = {         # 每个字母的图案数据...     }     
name"DAISY"    
for i in range(6):         
line""         
for char in name:             
line += letters[char][i]             
time.sleep(0.1)         
print(line)  
print_daisy()

七、总结

  • 用函数把代码“积木化”,让程序更简洁可维护。
  • 参数让函数更灵活,返回值让函数能“回信”。
  • 注意变量的作用域,别让同名变量互相干扰。
  • 多练实战,函数才能真正成为你写Python的“利器”。

如果你照着这个思路去改自己的Python代码,你会发现:

  • 程序变短了
  • 错误少了
  • 逻辑更清楚了
  • 维护起来轻松多了

这就是从“写代码”到“写好代码”的关键一步。