函数的作用:
1. 它们给代码片段命名,就跟“变量”给字符串和数字命名一样。
2. 它们可以接受参数,就跟你的脚本接受 argv 一样。
3. 通过使用 #1 和 #2,它们可以让你创建“微型脚本”或者“小命令”。
函数定义的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
函数定义的语法:
def function_name( parameter ):
"打印传入的字符串到标准显示设备上" # 说明函数的作用
print parameter
return
例子:
# -- coding: utf-8 --
def print_two(*args):
(arg1, arg2) = args
print("arg1: %r, arg2: %r" % (arg1, arg2))
def print_two_again(arg1, arg2): # 常用定义函数的方式,在 Python 函数中我们可以跳过整个参数解包的过程,直接使用 () 里边的名称作为变量名。
print("arg1: %r, arg2: %r" % (arg1, arg2))
def print_one(arg1):
print("arg1: %r" % arg1)
def print_none():
print("I got again.")
print_two("xun", "ye")
print_two_again("xun", "ye")
print_one("Winner")
print_none()
函数里边的变量和脚本里边的变量之间是没有连接。
# -- coding: utf-8 --
def cheese_and_crackers(cheese_count, boxes_of_crackers):
print("You have %d cheeses!" % cheese_count)
print("You have %d boxes of carckers!" % 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)
函数与文件
# -- coding: utf-8 --
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)
返回值:Python 词汇 return 来将变量设置为“一个函数的值”。
# -- coding: utf-8 --
def add(a, b):
print("ADDING %d + %d" % (a, b))
return a + b
def subtract(a, b):
print("SUBTRACTING %d - %d" % (a, b))
return a - b
def multipy(a, b):
print("MULTIPYING %d * %d" % (a, b))
return a * b
def divide(a, b):
print("DIVIDING %d / %d" % (a, b))
return a / b
print("Let's do some math with just functions!")
age = add(30, 5)
height = subtract(78, 4)
weight = multipy(90, 2)
iq = divide(100, 2)
print("Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height,weight, iq))
print("Here is a puzzle.")
what = add(age, subtract(height, multipy(weight, divide(iq, 2))))
print("That becomes: ", what, "Can you do it by hand?")
函数返回多个值
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
beans, jars, crates = secret_formula(start_point)
print("With a starting point of: %d" % start_point)
print("We'd have %d beans, %d jars, and %d crates." % (beans, jars, crates))
start_point = start_point / 10
print("We can also do that this way:")
print("We'd have %d beans, %d jars, and %d crates." % secret_formula(start_point))