Python 中,定义函数的语法如下:值得注意的是
def 函数名 ([参数列表]) : '''文档字符串''' 函数体/若干语句
# this one is like your scripts with argv def print_two(*args): arg1, arg2 = args #函数相关的代码行前面加上四个空格的缩进 print(f"arg1: {arg1}, arg2: {arg2}") # ok, that *args is actually pointless, we can just do this def print_two_again(arg1, arg2): print(f"arg1: {arg1}, arg2: {arg2}") # this just takes one argument def print_one(arg1): print(f"arg1: {arg1}") # this one takes no arguments def print_none(): print("I got nothin'.") print_two("Zed","Shaw") print_two_again("Zed","Shaw") print_one("First!") print_none()
程序结果:
arg1: Zed, arg2: Shaw arg1: Zed, arg2: Shaw arg1: First! I got nothing.
下面是给函数 cheese_and_crackers
赋值的几种不同的方式
def cheese_and_crackers(cheese_count, boxes_of_crackers): print(f"You have {cheese_count} cheeses!") print(f"You have {boxes_of_crackers} boxes of crackers!") print("Man that's enough for a party!") print("Get a blanket.\n") print("We can just give the function numbers directly:") cheese_and_crackers(20, 30) print("OR, we can use variables from our script:") amount_of_cheese = 10 amount_of_crackers = 50 cheese_and_crackers(amount_of_cheese, amount_of_crackers) print("We can even do math inside too:") cheese_and_crackers(10 + 20, 5 + 6) print("And we can combine the two, variables and math:") cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)
输出结果:
We can just give the function numbers directly: You have 20 cheeses! You have 30 boxes of crackers! Man that's enough for a party! Get a blanket. OR, we can use variables from our script: You have 10 cheeses! You have 50 boxes of crackers! Man that's enough for a party! Get a blanket. We can even do math inside too: You have 30 cheeses! You have 11 boxes of crackers! Man that's enough for a party! Get a blanket. And we can combine the two, variables and math: You have 110 cheeses! You have 1050 boxes of crackers! Man that's enough for a party! Get a blanket.
函数是可以和文件一起工作并发挥一些作用的。
在开始前,编辑传入的参数文件,这里为text1.txt,里面的内容为
之后运行代码
from sys import argv script, input_file = argv def print_all(f): print(f.read()) #输出文件内容 def rewind(f): #移动文件读取指针到指定位置,即头部 f.seek(0) def print_a_line(line_count, f): #输出当前行号的文件内容 print(line_count, f.readline()) current_file = open(input_file) print("First let's print the whole file:\n") print_all(current_file) print("Now let's rewind, kind of like a tape.") rewind(current_file) print("Let's print three lines:") current_line = 1 print_a_line(current_line, current_file) current_line = current_line + 1 print_a_line(current_line, current_file) current_line = current_line + 1 print_a_line(current_line, current_file)
代码运行结果
First let's print the whole file: This is line 1 This is line 2 This is line 3 Now let's rewind, kind of like a tape. Let's print three lines: 1 This is line 1 2 This is line 2 3 This is line 3
用 =
和一个新的 python 字符 return
来把函数中的变量设置为一个值
def add(a, b): print(f"ADDING {a} + {b}") return a + b def subtract(a, b): print(f"SUBTRACTING {a} - {b}") return a - b def multiply(a, b): print(f"MULTIPLYING {a} * {b}") return a * b def divide(a, b): print(f"DIVIDING {a} / {b}") return a / b print("Let's do some math with just functions!") age = add(30, 5) height = subtract(78, 4) weight = multiply(90, 2) iq = divide(100, 2) print(f"Age: {age}, Height: {height}, Weight: {weight}, IQ: {iq}") # A puzzle for the extra credit, type it in anyway. print("Here is a puzzle.") what = add(age, subtract(height, multiply(weight, divide(iq, 2)))) #这里面嵌套函数 print("That becomes: ", what, "Can you do it by hand?")
Let's do some math with just functions! ADDING 30 + 5 SUBTRACTING 78 - 4 MULTIPLYING 90 * 2 DIVIDING 100 / 2 Age: 35, Height: 74, Weight: 180, IQ: 50.0 Here is a puzzle. DIVIDING 50.0 / 2 MULTIPLYING 180 * 25.0 SUBTRACTING 74 - 4500.0 ADDING 35 + -4426.0 That becomes: -4391.0 Can you do it by hand?
注:
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
2.int(input())
不能输入浮点数,可以用 float(input())
来代替。