python---函数(概念、可选参数、默认参数、健壮性、错误信息定义)

进阶篇 函数 第一节

一、函数基本概念

define

def func_name():
    pass

使用函数内建议要有return

root@kali:~/python/laowangpy/function# ls
fuc_name_1.py
root@kali:~/python/laowangpy/function# cat fuc_name_1.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def funct1():
    return "1234567888"

print funct1()

root@kali:~/python/laowangpy/function# python fuc_name_1.py 
1234567888
root@kali:~/python/laowangpy/function# 

函数内没有return

root@kali:~/python/laowangpy/function# cat fuc_name_1.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def funct1():
    print 222
    #return None #默认是返回None的值

print funct1()

root@kali:~/python/laowangpy/function# python fuc_name_1.py 
222
None
root@kali:~/python/laowangpy/function# 
root@kali:~/python/laowangpy/function# cat fuc_name_1.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def funct1():
    print 222
    #return None #默认是返回None的值

#print funct1()

test = funct1()
print type(test)

root@kali:~/python/laowangpy/function# python fuc_name_1.py 
222
<type 'NoneType'>
root@kali:~/python/laowangpy/function# 

在使用函数尽量使用return与print配合,而不是只使用print,使用print的话会返回两个值

root@kali:~/python/laowangpy/function# cat fuc_name_1.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def funct1():
    print 222
    #return None #默认是返回None的值

#print funct1()
#test = funct1()
#print type(test)

print funct1()
root@kali:~/python/laowangpy/function# python fuc_name_1.py 
222
None
root@kali:~/python/laowangpy/function# 
root@kali:~/python/laowangpy/function# cat fuc_add.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def add(num1,num2):
    return num1+num2

print add(2,3)


root@kali:~/python/laowangpy/function# python fuc_add.py 
5
root@kali:~/python/laowangpy/function# 

二、.参数 <=> 抽象
1、如何制造参数? 去抽象需求

root@kali:~/python/laowangpy/function# cat fuc_add.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def add(num1,num2):
    return num1+num2

print add(2,3)
print add(4,6)
print add(8,9)

root@kali:~/python/laowangpy/function# python fuc_add.py 
5
10
17
root@kali:~/python/laowangpy/function# 

2.参数 分为 可选参数 必须的参数

更复杂的需求

1 + 2 = 3


1 + 2 + 3

1 + 2+ ....+ 1000

def add(*num):
    d = 0
    for i in num:
        d += i
    return d

print add(1,2,3,4,5)



def add(*num):

    d = 0
    for i in num:
        d += i
    return d

print add(1,2,3,4,5)


print add(1,2,3)


print add(2,4,6,8,1,2,3,4,12312,12314,123,123,123)

var1
var2
var3

var1 = None

1)、可选参数 是有默认值的(便于多处调用)

root@kali:~/python/laowangpy/function# cat funvar2.py 
#!/usr/bin/python
# --*-- coding:utf:8 --*--

def add(num1=2,num2=3):
    return num1+num2

print add()

root@kali:~/python/laowangpy/function# python funvar2.py 
5
root@kali:~/python/laowangpy/function# 
def add(*num):
里面的是一个*参数时,这个就是tuple元组
里面的是两个*参数时,这个就是dictionary字典

2)、必选参数 是没有默认值的

root@kali:~/python/laowangpy/function# cat funvar1.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

def add(*num):
    print type(num)
    d = 0
    for i in num:
        d += i
    return d
print add(12,3,4,5)
print add(44,55,66)
print (11,2,3,4,5,666,778,888,99)
root@kali:~/python/laowangpy/function# python funvar1.py 
<type 'tuple'>
24
<type 'tuple'>
165
(11, 2, 3, 4, 5, 666, 778, 888, 99)
root@kali:~/python/laowangpy/function# 

3)、默认值和没有默认值的区别在于 “=”

三、函数的健壮性(判断类型是否一致?实时查看错误信息)

1.你永远知道你的方法会返回什么(异常处理,条件判断)
2.返回你想要的结果

def add(num1 ,num2):

    if isinstance(num1,int) and isinstance(num2, int):#判断是否都是整型数据
        return num1+num2
    else:
        return '参数里有不是数字的类型'

print add('a',(1,2,3))

print add(1,2)

#断言,测试结果是否属于期望的
assert add(1,2) == 3

assert add(2,4) == 3

代码运行情况:

root@kali:~/python/laowangpy/function# cat funvar3.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--
def add(num1 ,num2):

    if isinstance(num1,int) and isinstance(num2, int):#判断是否都是整型数据
        return num1+num2
    else:
        return '参数里有不是数字的类型'

print add('a',(1,2,3))

print add(1,2)

#断言,测试结果是否属于期望的
assert add(1,2) == 3

assert add(2,4) == 3

root@kali:~/python/laowangpy/function# python funvar3.py 
参数里有不是数字的类型
3
Traceback (most recent call last):
  File "funvar3.py", line 17, in <module>
    assert add(2,4) == 3
AssertionError
root@kali:~/python/laowangpy/function# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐为波

看着给就好了,学习写作有点累!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值