视频位置:151:00
本节学习函数。
当我们构建大型的复杂程序时,我们应该把代码分解成更小的可重复使用的块,即函数。如input(),print()都是内置的函数。
#先定义才能调用
def greet_user(): #小写开头,多个单词用下划线连接,
print("hello world")
print("welcome aboard")
# 在定义函数后要空两行
print("start")
greet_user() #只有被调用时才执行函数里的语句。
print("Finish")
输出为:
start
hello world
welcome aboard
Finish
函数就相当于封装好的功能库。
接下来,传递信息给函数。
def greet_user(name): #小写开头,多个单词用下划线连接,
print(f"hello {name}")
print("welcome aboard")
# 在定义函数后要空两行
print("start")
greet_user("jonh") #如果这里没有输入,会报错
print("Finish")
输出为:
start
hello jonh
welcome aboard
Finish
两个参数。
def greet_user(first_name,last_name): #小写开头,多个单词用下划线连接,
print(f"hello {first_name} {last_name}")
print("welcome aboard")
# 在定义函数后要空两行
print("start")
greet_user("jonh","smith") #如果交换位置,就成了hello smith jonh
print("Finish")
评论中有人提到了形参和实参,我自己觉得吧,就是上面first_name和john的区别,一个是占位的,一个是具体的。
输出结果:
start
hello jonh smith
welcome aboard
Finish
我们也可以指定哪个对应哪个,比如
def greet_user(first_name,last_name): #小写开头,多个单词用下划线连接,
print(f"hello {first_name} {last_name}")
print("welcome aboard")
# 在定义函数后要空两行
print("start")
greet_user(last_name="jonh",first_name="smith") #不能只写first_name ,不写last_name 要写两个都得写
print("Finish")
上面的好处是提高代码可读性。
接下来,让函数有返回值
def square(number):
return number * number
result = square(3)
print(result)
输出为:
9
然而,如果这样写:
def square(number):
print(number * number)
result = square(3)
print(result)
输出为:
9
None
上面,计算了3*3,返回值是空。如果没有return就会这样。
小练习,将之前学的(如下)的这个程序改编成函数。
注意:input 和print都不要改到函数里,因为输入、输出的方式有很多,不要封装起来。
message = input(">")
words = message.split(' ') #将字符串分割成多个单词,分隔关键词为‘’里面的内
emojis = {
":)":"lalalala",
":(":"55555555"
}
output = ""
for word in words:
output += emojis.get(word,word) +" "
print(output)
我的改编如下:
def translate():
words = message.split(' ') #将字符串分割成多个单词,分隔关键词为‘’里面的内
emojis = {
":)":"lalalala",
":(":"55555555"
}
output = ""
for word in words:
output += emojis.get(word,word) +" "
return output
message = input(">")
print(translate()) #此处不能print(output)
输出如下:
>I am sad :)
I am sad lalalala
我感觉上函数没有输入项怪怪,改了一下也行:
def translate(message):
words = message.split(' ') #将字符串分割成多个单词,分隔关键词为‘’里面的内
emojis = {
":)":"lalalala",
":(":"55555555"
}
output = ""
for word in words:
output += emojis.get(word,word) +" "
return output
#message2 = input(">")
#print(translate(message2)) #注意这里我添了一个2,不加也行
message = input(">")
print(translate(message))
视频位置173:40