Python 函数

函数能提高应用的模块性,和代码的重复利用率。

定义一个函数:

  函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()

   任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

      函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

   函数内容以冒号起始,并且缩进。

   return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法:

1 def functionname( parameters ):
2    "函数_文档字符串"
3    function_suite
4    return [expression]

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。(把具有独立功能代码块当作整数)

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

如下实例调用了printme()函数:

 1 # -*- coding: UTF-8 -*-
 2  
 3 # 定义函数
 4 def printme( str ):
 5    "打印任何传入的字符串"
 6    print str;
 7    return;
 8  
 9 # 调用函数
10 printme("我要调用用户自定义函数!");
11 printme("再次调用同一函数");

 函数的实参和形参

1 # -*- coding:utf-8 -*-
2 def summing(a,b,c):    形参
    """求三个数和"""
3 sum=a+b+c 4 print(sum) 5 num1=int(input("请输入第一个数:")) 6 num2=int(input("请输入第二个数:")) 7 num3=int(input("请输入第三个数:")) 8 summing(num1,num2,num3) 实参

 在函数summing()的定义中,变量a,b,c是一个形参——函数完成其工作所需的一项信息。在代码summing(num1,num2,num3) 中,num1,num2,num3是实参,实参是调用函数时传递给函数的信息。调用函数时,将要让函数使用的信息放在括号。在summing(num1,num2,num3)中,将实参num1,num2,num3传递给函数summing(),这个值被存储在形参中。

传递实参:

函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同,也可以使用关键字实参,其中每个实参都由变量名和值组成,还可以使用列表和字典。

位置实参:

 1 # -*- coding:utf-8 -*-
 2 def summing(a,b,c):
 3     sum =a+b+c
 4     #print(sum)
 5     return sum
 6 def Mean_value(a1,b2,c3):
 7     averaging=summing(a1,b2,c3)
 8     averaging=averaging/3
 9     print("平均值%d"%averaging)
10 num1 = int(input("请输入第一个数:"))
11 num2=int(input("请输入第二个数:"))
12 num3=int(input("请输入第三个数:"))
13 #summing(num1,num2,num3)
14 Mean_value(num1,num2,num3)

 

在调用函数时,python必须将函数调用的每个实参都关联到函数定义中的一个形参,这种关联方法被称为位置实参。

 

关键字实参:

关键字实参是传递给函数的名称——值对。关键字实参让你无需考虑函数调用中实参顺序,还清楚地指出了函数调用中各个值得用途。

1 # -*- coding:utf-8 -*-
2 def describe_pet(animal_type,pet_name):
3     print("\nI have a" + animal_type +".")
4     print("My"+animal_type+"s name is "
5           + pet_name.title()+".")
6 describe_pet(pet_name="larry",animal_type="han " )

输出结果:

1 I have ahan .
2 Myhan s name is Larry.

默认值:

编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,python将使用指定的实参值,否则,将使用形参的默认值。给形参指定默认值后,可在函数调用中相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。(位置实参必须写在关键字实参后面)

返回值:

return可以返回一个函数执行结果下方代码不会被执行

如果return后面没有任何内容,表示会到调用函数的位置,并且不返还任何结果

如果未在函数中指定return,那这个函数的返回值为None 
1 # -*- coding:utf-8 -*-
2 def get_formatte_name(first_name,last_name):
3     """返回姓名"""
4     full_name=first_name+""+last_name
5     return full_name.title()
6 musician=get_formatte_name("xie","cc")
7 print(musician)
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构
1 # -*- coding:utf-8 -*-
2 def build_person(first_name,last_name):
3     person={"name":first_name,"age":last_name}
4     return  person
5 musician=build_person("xie",12)  #返回字典
6 print(musician)

输出结果:

1 {'name': 'xie', 'age': 12}     #返回字典

 

1 # -*- coding:utf-8 -*-
2 def build_person(first_name,last_name,name=""):
3     person={"name":first_name,"age":last_name}
4     if name:
5         person["name"]=name
6 
7     return  person
8 musician=build_person("xie",12,name="cc")
9 print(musician)

输出结果:

1 {'name': 'cc', 'age': 12}

 传递任意数量实参:

1 # -*- coding:utf-8 -*-
2 def make(*toppings):
3     print(toppings)
4 make("pepperoni","extra","mushroons")

输出结果:

1 ('pepperoni', 'extra', 'mushroons')

 传递任意数量关键字实参:

 1 # -*- codfing:utf-8 -*-
 2 def build_profile(first, last,**user_info):
 3     profile={}
 4     profile["first_name"] = first
 5     profile["last_name"] = last
 6     for key,value in user_info.items():
 7         profile[key]=value
 8     return  profile
 9 build_profile("albert","einstein",princeton="location=",field="physics")
10 print((build_profile))

全局变量:

 1 # -*- coding:utf-8 -*-
 2 a=100
 3 def variables():
 4     print(a)
 5 
 6 def variables1():
 7     print(a)
 8 
 9 variables()
10 variables1()

局部变量:

 1 # -*- coding:utf-8 -*-
 2 a=200  #全局变量
 3 def variables():
 4 
 5     a = 100  #局部变量,只作用该函数里面
 6     print(a)
 7 
 8 
 9 def variables1():
10     print(a)
11 
12 
13 variables()
14 variables1()

 

global:
 1 # -*- coding:utf-8 -*-
 2 a=200
 3 c=100#全局变量
 4 def variables():
 5     global a   #使用global用来对一个全局变量的声明,对全局变量进行修改
 6     a = 400 #局部变量,只作用该函数里面,当加global,对全局变量进行修改。
 7     print(a)
 8     print(c)
 9 def variables1():
10     a=50     #局部变量,只作用该函数里面
11     print(a)
12 
13 def variables2():
14     print(a)
15 
16 variables()
17 variables1()
18 variables2()
匿名函数:
lambda 参数:式子

 
 

 

 

posted @ 2017-12-21 23:33  zqxqx  阅读(246)  评论(0)    收藏  举报