python基础-函数

1、什么是函数?
函数是实现特定功能而封装起来的一组语句块,可以被用户调用

2、函数的分类
自定义函数(用户编写);预定义函数(系统自带,lib自带)

3、为什么使用函数
降低编程难度,将大问题分解为若干小问题;代码重用,函数可被多次调用

4、函数的语法
定义:
def 函数名字(参数):
    函数体
    return 语句 #不带表达式的return相当于返回None

调用:
函数名字

定义函数和调用函数

函数名称最好以_分割

 

#定义函数
def print_me(str):
    print(str)
    return
#调用函数
print_me("我要调用用户自定义函数")
print_me("再次调用同一函数")

 

结果:

我要调用用户自定义函数
再次调用同一函数

 

参数传递

所有参数在python中都是按引用传递
一句话:要变都变

def change_me(mylist):
    mylist.append([1,2,3,4])
    print("函数内取值:",mylist)
    return

mylist = [10,20,30]
change_me(mylist)
print("函数外取值:",mylist)

结果:

函数内取值: [10, 20, 30, [1, 2, 3, 4]]
函数外取值: [10, 20, 30, [1, 2, 3, 4]]

 

关于参数的点点滴滴

def print_info(name,age = 35):
    print("Name:",name)
    print("Age:",age)
    return

#调用函数
#关键字参数,允许函数调用时参数的顺序与声明时不一致
print_info(name='xm',age=18)
print_info(age=50,name='xm')
#缺省参数,缺省参数的值如果没有被传入,则被认为是默认值
print_info(name='xm')

结果:
Name: xm
Age: 18
Name: xm
Age: 50
Name: xm
Age: 35

 

不定长参数

  可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数

基础语法:

 

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]
*号的变量名会存放所有未命名的变量参数.选择不多传参数也可
#不定长参数
def print_info(arg1,*vartuple):
    print("输出:",arg1)
    for var in vartuple:
        print(var)
    return

#调用函数
#不多传参数
print_info(10)
print("\n==============\n")
#多传参数
print_info(70,60,50)

结果:

输出: 10

==============

输出: 70
60
50

 

匿名函数

1、lambda只是一个表达,而不是一个代码块,函数体比def简单很多。仅仅能在lambda表达式中封装有限的逻辑
2、语法:
lambda [arg1][,arg2,...argn]]:expression

 

sum = lambda arg1,arg2:arg1+arg2

#调用sum函数
print("相加后的值:",sum(10,20))

 

return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None

 

def sum(arg1,arg2):
    total=arg1+arg2
    print("函数内:",total)
    return total #改为return后,返回什么? 返回的none

#调用sum函数
total=sum(10,20)
print("函数外:",total)

 

结果:

函数内: 30
函数外: 30

 

变量作用域

全局变量和局部变量

1、定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域
2、局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问

 

total = 0#这是一个全局变量

def sum(arg1,arg2):
    total=arg1+arg2 #total在这里是局部变量
    print("函数内是局部变量:",total)
    return total 

#调用sum函数
#total=sum(10,20)
sum(10,20)
print("函数外是全局变量:",total)

 

结果:

函数内是局部变量: 30
函数外是全局变量: 0

 

全局变量想作用于函数内,需加global

counter = 1
def do_st():
    global counter
    for i in (1,2,3):
        counter +=1   #循环3次后,counter = 4,因为是全局变量,要更改变量的值
        
print(do_st()) #没有return语句,返回None
print(counter) #答案是4

结果:

None
4

 

 

 

 

 

 

posted @ 2017-06-09 01:16  R-Bear  阅读(307)  评论(0编辑  收藏  举报