# 函数定义:
def func(var1,var2,…,varn)
{
#函数体
}
# 1、关键字:def
# 2、函数名func
# 3、参数组,数字、字符串、列表、字典,都可以作为函数参数
# 4、数字、字符串作为变量,即可立即数,也可以是其变量
# 5、列表、字典作为函数参数使用时,只能是其变量,必须事先赋值给变量
# 6、形参和实参必须严格对应,顺序不能变
# 7、不支持所谓的“关键字”参数、或“默认”参数。
#例程1:有返回函数
# 函数定义的关键字是def,后面是函数名,括号内是参数
def add(x,y) #定义了一个名为add的函数,有两个形参x,y
{
c = x+y #函数功能(输入参数相加)
return c #返回结果
}
a = add(4,6) #形参x,y被实参4,6替换,调用函数add,把结果赋值给a
print("%\n",a) #打印a
#例程2:无返回函数
# 函数定义的关键字是def,后面是函数名,括号内是参数
def add(x,y) #定义了一个名为add的函数,有两个形参x,y
{
c = x+y #函数功能(输入参数相加)
print("%\n",c) #打印c,函数不返回数值
}
a = add(4,6) #调用函数add,在函数内打印出结果,不返回值
# 函数定义时的形参,必须与函数调用时的实参一一对应,顺序不能错
#例程3:无输入参数函数
def my_print() #定义了一个名为my_print的函数,没有参数
{
print("%\n","My print") #函数功能
}
my_print() #调用函数my_print
#例程4:列表作为参数使用
# 功能:将输入参数1(列表)的每一项,加上参数2的值(数字),
# 成生一个新的列表,并输出该列表
def add(x,y) #定义了一个名为add的函数,有两个形参x,y
{
list_out = [] #定义一个空列表,
a = len(x) #计算输入列表的项数
for i in range(0,a,1)
{
list_out = list_out.append(x[i]+y) #list列表的每一项都+y,生产新列表
}
return list_out #输出返回一个新列表
}
list = [1,2,3,4,5] #列表必须事先赋值给变量
a = add(list,4) #list只能是变量,不能直接使用([...])
print("%\n",a) #调用add返回一个新的列表,打印新的列表
# def定义的函数形参可以是数字、字符串,也可以是列表、字典;
# 函数的定义者须准确了解参数的类型,并在函数中正确使用。
#例程4:列表作为参数使用
# 功能:将输入参数1(列表)的每一项,加上参数2的值(数字),
# 成生一个新的列表,并输出该列表
def add(list,y) #定义了一个名为add的函数,有两个形参x,y
{
list_out = [] #定义一个空列表,
a = len(list) #计算输入列表的项数
for i in range(0,a,1)
{
list_out = list_out.append(list[i]+y) #list列表的每一项都+y,生产新列表
}
return list_out #输出新列表
}
list = [1,2,3,4,5]
a = add(list,4) #将列表付给第一个参数,第二个参数是一个数值
print("%\n",a) #调用add返回一个新的列表,打印新的列表
# def定义的函数形参可以是数字、字符串,也可以是列表、字典;
# 函数的定义者须准确了解参数的类型,并在函数中正确使用。
# 为避免忘记类型,需养成习惯,即:
# 列表参数的形参用list,字典参数的形参用dict
#例程5:字典作为参数使用
# 功能:在函数内部打印字典的每一项
def print_dict(dict) #函数只有一个参数(字典变量,不能直接使用{...})
{
a = len(dict) #计算输入列表的项数
for i in range(0,a,1)
{
b = dict.get_key(i)
c = dict.get(b)
print("% %\n",b,c)
}
}
d = {"a":1,"world":"世界","c":3,"hellow":"你好"}
print_dict(d)
# 形成习惯:列表参数的形参用list,字典参数的形参用dict;
# 列表、或字典作为函数参数并无特殊要求;
# 函数调用者需要准确知道参数类型
#例程6:变量作用域(局部变量只在函数内有效)
def func() #函数定义
{
x = "Hellow!" #函数内使用了一个局部变量 x
print("%\n",x) #打印局部变量 x
}
func() #执行func()函数,会打印出:"Hellow!"
print("%\n",x) #本打印语句会出问题,x 是局部变量,只在函数内有效
# 在func()函数外面无效,因此,不会打印出"Hellow!"。
#例程7:变量作用域(内、外都定义了时,内部用局部变量,外部用全局变量)
x = "你好!" #函数外部定义的变量(全局变量)
def func()
{
x = "Hellow!" #函数内使用了一个局部变量 x
print("%\n",x) #打印局部变量 x
}
func() #执行func()函数时,内部x有定义,因此打印出:"Hellow!"
print("%\n",x) #函数内部定义的变量,在外部无效,因此打印出:"你好!"
# 函数内部定义的变量,在外部无效,因此,在外部只能使用外部定义的值,
# 即:"你好!"
#例程8:变量作用域(内部没定义时,使用外部的值)
x = "你好!" #函数外部定义的变量(全局变量)
def func()
{
print("%\n",x) #函数内部没有定义 x 值,会自动使用外部定义的值
}
func() #执行func()函数时,因内部没有定义x,因此打印出:"你好!"
print("%\n",x) #同样打印出:"你好!"
# 如果函数外部定义了某个变量,而内部没有定义,函数会自动使用
# 外部的定义。
#例程9:函数返回关键字:return
# 函数可以返回一个数字、字符串、列表、字典
# 当希望函数返回多个数据时,可以将多个数据构造成一个列表,将列表返回
def multi_value()
{
r1 = "第一个返回值"
r2 = "第二个返回值"
r3 = "第三个返回值"
list = [] #将空列表赋值给list
list = list.append(r1) #添加列表项
list = list.append(r2) #添加列表项
list = list.append(r3) #添加列表项
return list #返回包含多个值的列表
}
a = multi_value()
print("%\n",a)
var1 = a[0] #把返回值从列表中提取出来
var2 = a[1] #把返回值从列表中提取出来
var3 = a[2] #把返回值从列表中提取出来
print("% % %\n",var1,var2,var3) #打印多项返回值