Python 学习之路-04 函数

2019-01-18  本文已影响0人  末世狂人

函数

# 定义一个函数
# 只是定义的话不会执行

def func():
    print("我是一个函数")
    print("我要完成一个功能")
    print("我已经结束了")
    
#函数的调用
func()
我是一个函数
我要完成一个功能
我已经结束了

函数的参数和返回值

参数的使用

# 参数的定义和使用
def hello(person):
    print("{0}!你肿么了?".format(person))
    print("Sir,你不理我我就走了哦.....")
    # 向调用者返回一个值
    return "你走开!"

p = "明月"
# 获取返回值
ret = hello(p)
print(ret)
明月!你肿么了?
Sir,你不理我我就走了哦.....
你走开!
# 打印一行乘法表
def multiplication(row):
    for col in range(1,row+1):
        ji = col * row
        print("{0}*{1}={2}".format(col,row,ji),end="  ")
    print("")
    
# 打印99乘法表
for row in range(1,10):
    multiplication(row)
1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12   4*4=16   
1*5=5   2*5=10   3*5=15   4*5=20   5*5=25   
1*6=6   2*6=12   3*6=18   4*6=24   5*6=30   6*6=36   
1*7=7   2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49   
1*8=8   2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64   
1*9=9   2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72   9*9=81   
#默认参数案例
def reg(name,age,gender="male"):
    if(gender=="male"):
        print("{0} is {1},and he is a good student".format(name,age))
    else:
        print("{0} is {1},and she is a good student".format(name,age))
        
reg("zhagnsan",18)

reg("xiaojing",17,"female")
zhagnsan is 18,and he is a good student
xiaojing is 17,and she is a good student
#关键字参数案例
def func_student(name="NO Name", age=0, addr="中国"):
    print("我是一个学生!")
    print("我叫{0},我今年{1}岁了,我住在{2}".format(name,age,addr))

func_student(age=22, name="张三", addr="成都")
我是一个学生!
我叫张三,我今年22岁了,我住在成都

收集参数混合调用的顺序问题

# 收集参数案例
def func_student(*ages):
    print("Hello 大家好!")
    # type函数 检测数据的类型
    #print(type(ages))
    for item in ages:
        print(item)
        
func_student("张三", 18, "北京市大通区", "wangxiaoj", "single")

func_student("李四", 22, "我喜欢电影")

# 说明收集参数可以为空
func_student()
Hello 大家好!
张三
18
北京市大通区
wangxiaoj
single
Hello 大家好!
李四
22
我喜欢电影
Hello 大家好!
#收集参数之关键字参数案例
def stu( **kwages):
    print("Hello! 大家好,我先自我介绍一下:")
    #在循环字典的时候,将字典转换成键值队的方式 即 key:value的形式
    for k,v in kwages.items():
        print(k, "...", v)

stu(name="wangxiaoj", age=19, addr="北京市大通州区", love="xiaojinjin", work="Teacher")

# 将*号重复20遍
print("*" * 20)

stu(name="周伯通")
#同样 参数可以为空
stu()
Hello! 大家好,我先自我介绍一下:
name ... wangxiaoj
age ... 19
addr ... 北京市大通州区
love ... xiaojinjin
work ... Teacher
********************
Hello! 大家好,我先自我介绍一下:
name ... 周伯通
Hello! 大家好,我先自我介绍一下:
#收集参数混合使用的案例
#使用默认参数时,注意默认参数的位置要在args之后kwargs之前
def stu(name, age, *ages, hobby="没有", **kwages):
    print("Hello 大家好!")
    print("我叫{0}, 我今年{1}岁了!".format(name,age))
    if hobby=="没有":
        print("sorry!我没有爱好!!")
    else:
        print("我的爱好是{0}".format(hobby))
        
    print("我不喜欢")
    for item in ages:
        print(item,end=" ")
    
    print("我的主修课是:")
    for k,v in kwages.items():
        print(k,"---",v)

        
stu("李晓明", 20)

print("*" * 30)

stu("王晓静", 22, "逛街", "购物", "上网", "游戏", hobby="音乐", course="音乐课", score=98)
Hello 大家好!
我叫李晓明, 我今年20岁了!
sorry!我没有爱好!!
我不喜欢
我的主修课是:
******************************
Hello 大家好!
我叫王晓静, 我今年22岁了!
我的爱好是音乐
我不喜欢
逛街 购物 上网 游戏 我的主修课是:
course --- 音乐课
score --- 98

收集参数的解包的问题

# 解包的案例
def stu(*ages):
    print("哈" * 10)
    for index in ages:
        print(index)
        
l = list()
l.append("wangxiaojing")
l.append(18)
l.append("apple")
stu(l)
print("***" * 10)
#解包list的调用方法
stu(*l)
哈哈哈哈哈哈哈哈哈哈
['wangxiaojing', 18, 'apple']
******************************
哈哈哈哈哈哈哈哈哈哈
wangxiaojing
18
apple

返回值

# 返回值案例
def func1():
    print("我有返回值!")
    return 1

def func2():
    print("我没有返回值")
    
f1 = func1()
print(f1)

print("")

f2 = func2()
print(f2)
我有返回值!
1

我没有返回值
None

函数文档

#函数文档案例
def stu(name, age, *ages):
    '''这是stu文档'''
    print("这是一个函数文档")
    
stu.__doc__
'这是stu文档'
# 查找函数的帮助文档
#1.使用help文档
help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
上一篇下一篇

猜你喜欢

热点阅读