python学习之函数

##########函数############

1.函数定义函数
• def关键字,依次写出函数名、括号、括号中的参数和冒号 :
• 在缩进块中编写函数体,函数的返回值用 return 语句返回。
函数在执行过程中一旦遇到reture,函数就执行完毕,并将结果返回,函数执行过程中没有遇到return,返回值None。
def func():
pass
return
def hello():
    return 'hello'
    print 'fentiao'

print hello()
运行结果
/usr/bin/python2.7 /root/PycharmProjects/python/dic..py
hello

Process finished with exit code 0

2.调用函数
Python 内置了很多有用的函数,我们可以直接调用:
• abs()        //求绝对值
In [33]: abs(-5)
Out[33]: 5

• cmp()        //比较大小
In [36]: cmp(3,9)
Out[36]: -1

In [37]: cmp(8,4)

Out[37]: 1



• 数据类型转换函数:
int(), float(), str(),unicode(),bool()

3.理解函数名
•函数名与变量名类似,其实就是指向一个函数对象的引用;
•给这个函数起了一个“别名”:函数名赋给一个变量
In [38]: a = abs

In [39]: a(-99)
Out[39]: 99

In [40]: a = cmp

In [41]: cmp(10,2)
Out[41]: 1

In [42]: cmp(0,8)

Out[42]: -1



4.空函数
•定义一个什么事也不做的空函数,可以用 pass 语句;
•pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来
def nofunc():
def hello():
    return 'hello'
    print 'fentiao'

    def world():        
        pass        //此处不做任何动作

print hello()



5.pass参数检查
•调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError;
• 如果参数类型不对,Python 解释器就无法帮我们检查。
• 数据类型检查可以用内置函数 isinstance 实现函数返回值
def my_abs(x):
    if isinstance(x,(int,float)):
        print abs(x)
    else:
        print "请输入整型或浮点型"
my_abs('123')
my_abs(-123)
输出
/usr/bin/python2.7 /root/PycharmProjects/python/dic..py
请输入整型或浮点型            

123



Process finished with exit code 0

def my_abs(x):
    if type(x) != int or type(x) != str:
        print "请输入整型或浮点型"
    return abs(x)

print my_abs(-23)



函数可以返回多个值吗?那编写python程序,思考下:定义一个函数func,传入两个数字,返回两个数字的平均值与最大值。
def func(x,y):
    if not isinstance(x,int)  or not isinstance(y,int):
        print 'Error Type'
    avg = sum((x,y))/2
    maxnum = max(x,y)
    return "平均值:[%d] \n最大值:[%d]" %(avg, maxnum)

print func(3,7)
输出
/usr/bin/python2.7 /root/PycharmProjects/python/dic..py
平均值:[5]

最大值:[7]



Process finished with exit code 0

6.函数返回值
• 函数返回值用return关键字;
• 返回一个 tuple 可以省略括号;

• Python 的函数返回多值其实就是返回一个元组 tuple,函数调用接收返回值时,按照位置赋值给变量



• 函数执行完毕也没有 return 语句时,自动 return None

7.函数参数
•默认参数可以降低调用函数的难度。
定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决?
def power(x,n=2): #n的默认值2
    return x**n

print power(4)    #n没有赋值时默认为2,即求平方



注意事项: •有多个参数时,变化大放前面,变化小的放后面;
     •必选参数在前,默认参数在后

eg:






容易出错点:试一试:先定义一个函数,传入一个 list,添加一个END 再返回.
        fun([1,2,3] ---> [1,2,3,END]
        fun()        ---> [END]
def fun(li=[]):
    li.append('END')
    return li
print fun([1,2,3])
print fun()
输出
/usr/bin/python2.7 /root/PycharmProjects/python/dic..py
[1, 2, 3, 'END']
['END']

Process finished with exit code 0


8.可变参数
- 可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个。
*args 以数学题为例子,给定一组数字 a,b,c......,请计算 a^2 + b^2 + c^2 + ......


如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办?
- Python 允许你在 list 或 tuple 前面加一个 * 号;
- 把 list 或 tuple 的元素变成可变参数传进去;
答:定义函数时,形参可以为*args,使函数可以接收多个参数,如果想将一个列表或着元组传入函数,也可通过*li或*t,将参数传入函数里
def fun(*args):
    print type(args)
    return max(args),min(args),sum(args)
li = 3,6,89,45
print fun(*li)
输出
/usr/bin/python2.7 /root/PycharmProjects/python/dic..py
<type 'tuple'>
(89, 3, 143)

Process finished with exit code 0
9.关键字参数
•关键字参数允许你传入 0 个或任意个含参数名的参数;
•这些关键字参数在函数内部自动组装为一个 dict;
•关键字参数用**kwargs参数组合
•参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。
•参数定义的顺序必须是:必选参数、 默认参数、可变参数和关键字参数
    • 必选参数
    •默认参数:默认参数一定要用不可变对象
    •可变参数:*args 是可变参数,args 接收的是一个 tuple
    •关键字参数:**kw 是关键字参数,kw 接收的是一个dict
•对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它

#关键词参数

def enroll(name,age=22,**kwargs):
    print 'name:'+name
    print 'age:%d' % age
    for k,w in kwargs.items():
        print '%s : %s'%(k,w)
        print type(kwargs)
enroll('lee',myclass='光电1',gender='male')


#
def enroll(name,age=22,**kwargs):
    print 'name:'+name
    print 'age:%d' % age
    for k,w in kwargs.items():
        print '%s : %s'%(k,w)
        #print type(kwargs)
dic = {'myclass':'电1','gender':'male'}

enroll('lee',**dic)



10.变量的作用域
• 局部变量:只能在函数内部使用的变量
• 全局变量:在整个程序中使用的变量
• global关键字:强制将局部变量转换为全局变量

b = 2       #全局变量,在整个程序中生效
def a():
    b = 1   #局部变量,只在函数内生效
    print b
a()
print b


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值