python学习笔记-函数

2018-08-19  本文已影响0人  肥树仙僧

函数

# 定义一个函数
# 只是定义的话不会执行
# 1、def关键字,后跟一个空格
# 2、函数名,自己定义,起名需要遵循命名规则,约定俗成,不用大驼峰(只给类用)
# 3、后面括号和冒号不能省,括号内可以有参数
# 4、函数内所有代码缩进
def func():
    print("我是一个函数")
    print("我要完成一定功能")
    print("我结束了")

# 函数调用
# 直接函数名后面跟括号
func()

我是一个函数
我要完成一定功能
我结束了

参数的定义和使用

# 参数的定义是使用
# 参数的person只是一个符号,代表队黑色调用的时候的某一个数据
def hello(person):
    print("{0}, 你肿么了".format(person))
    print("sir, 你不理睬额额就走了")
    
p = "明月"
hello(p)
###################################
明月, 你肿么了
sir, 你不理睬额额就走了
# return语句的使用
# 函数打完招呼后返回一句话
def hello(person):
    print("{0}, 你肿么了".format(person))
    print("sir, 你不理睬额额就走了")
    
    return "我已经跟{0}打招呼了,{0}不理我".format(person)

p = "明月"
print(hello(p))
###########################################
明月, 你肿么了
sir, 你不理睬额额就走了
我已经跟明月打招呼了,明月不理我
# return案例2:无条件结束
def hello(person):
    print("{0}, 你肿么了".format(person))
    return "哈哈,我提前结束了"
    print("sir, 你不理睬额额就走了")
    
p = "明月"
print(hello(p))
######################################
明月, 你肿么了
哈哈,我提前结束了
# 查找函数帮助文档
# 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.
# 九九乘法表
# version 1.0
for row in range(1,10):
    # 打印一行
    for col in range(1,row+1):
        # print函数默认任务打印完毕后换行
        print(row * col, end=" ")
    print("...................................")
#######################################
1 ...................................
2 4 ...................................
3 6 9 ...................................
4 8 12 16 ...................................
5 10 15 20 25 ...................................
6 12 18 24 30 36 ...................................
7 14 21 28 35 42 49 ...................................
8 16 24 32 40 48 56 64 ...................................
9 18 27 36 45 54 63 72 81 ...................................
# 定义一个函数,打印一行
def printLine(row):
    for col in range(1,row+1):
        # print函数默认任务打印完毕后换行
        print(row * col, end="\t")
    print("")

# 九九乘法表
# version 2.0
for row in range(1,10):
    printLine(row)
#######################################
1   
2   4   
3   6   9   
4   8   12  16  
5   10  15  20  25  
6   12  18  24  30  36  
7   14  21  28  35  42  49  
8   16  24  32  40  48  56  64  
9   18  27  36  45  54  63  72  81

参数详解

# 关键字
def stu(name, age, addr):
    print("I am a student")
    print("我叫{0},我今年{1}岁了,我住{2}".format(name, age, addr))
    
n = "jingjing"
a = 18
addr = "我家"

# 普通参数,只按照位置传递,容易出错
stu(a, n, addr)

def stuKey(name, age, addr):
    print("I am a student")
    print("我叫{0},我今年{1}岁了,我住{2}".format(name, age, addr))
    
n = "jingjing"
a = 18
addr = "我家"

# 普通参数,只按照位置传递,容易出错
stuKey(age=a, name=n, addr=addr)
############################################################################
I am a student
我叫18,我今年jingjing岁了,我住我家
I am a student
我叫jingjing,我今年18岁了,我住我家

收集参数-不定长参数

# 收集参数
# 函数模拟一个学生进行自我介绍,但具体内容不清楚
# args把它看成一个list
def stu(*args):
    print("------------------------------------------")
    print("hello,大家好,我自我介绍下,简单说两句")
    # type函数作用是检测变量的类型
    print(type(args))
    for item in args:
        print(item)

stu("liuying", 18, "北京大通州区", "wangxiaojing", "single")
stu("周大神")
stu()
############################################################################
------------------------------------------
hello,大家好,我自我介绍下,简单说两句
<class 'tuple'>
liuying
18
北京大通州区
wangxiaojing
single
------------------------------------------
hello,大家好,我自我介绍下,简单说两句
<class 'tuple'>
周大神
------------------------------------------
hello,大家好,我自我介绍下,简单说两句
<class 'tuple'>

收集参数之关键字收集参数

# 关键字收集参数
# 自我介绍
# 调用的时候需要使用关键字调用
def stu(**kwargs):
    print("*" * 50) # 字符串乘法
    print(type(kwargs))
    # 在函数体内对于kwargs的使用不用带星号
    print("Hello,大家好,我先自我介绍一下:")
    # 对于字典的访问,python2.x 跟python3.x有区别
    for k,v in kwargs.items():
        print(k,"---", v)
        print(type(kwargs.items()))
        
stu(name="liuying", age=19, addr="北京大通州区", lover="王晓静", work="Teacher")
stu(name="周大神")
stu()

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

# 收集参数混合使用
# stu模拟一个学生的自我介绍
def stu(name, age, *args, hobby="没有", **kwargs):
    print("*" * 50)
    print("Hello,大家好")
    print("我叫{0}, 我今年{1}岁了".format(name, age))
    if hobby == "没有":
        print("我没有爱好,谢谢")
    else:
        print("我的爱好是{0}".format(hobby))
    
    print("**********普通收集参数************************")
    for i in args:
        print(i)
    
    print("**********关键字收集参数************************")
    for k,v in kwargs.items():
        print(k, "---", v)
        
# 开始调用
name = "liuying"
age = 19

# 调用不同格式
#stu(name, age)
#stu(name, age, "游泳")
stu(name, age, "王晓静", "刘石头", hobby="游泳", hobby2="烹饪", hobby3="跟不同女生聊天")

收集参数的解包问题

# 收集参数的解包问题
def stu(*args):
    print("*" * 30)
    print("hahaha")
    # 主要用来调试
    n = 0
    for i in args:
        print(type(i))
        print(n)
        n += 1
        print(i)
        
stu("liuying", "liuxiaoying", 19, 200)

l = list()
l.append("liuying")
l.append("liuxiaoying")
l.append(19)
l.append(200)
# 这么写,会将list当成tuple的一个元素,所以for循环时只循环一次
stu(l)
# 如果要循环打印出list中的每一个元素,需要在实参前加上解包符号---*
stu(*l)
############################################################################
******************************
hahaha
<class 'str'>
0
liuying
<class 'str'>
1
liuxiaoying
<class 'int'>
2
19
<class 'int'>
3
200
******************************
hahaha
<class 'list'>
0
['liuying', 'liuxiaoying', 19, 200]
******************************
hahaha
<class 'str'>
0
liuying
<class 'str'>
1
liuxiaoying
<class 'int'>
2
19
<class 'int'>
3
200

同理 dict类型收集参数一样可以解包,但是

返回值

函数文档

# 文档
# 函数stu是模拟一个学生的自我介绍的内容
def stu(name, age, *args):
    '''
    这是文档
    第一行
    第二行
    第三行
    '''
    print("This is func doc")
    
# 查看函数文档
help(stu)
stu.__doc__
############################################################################

Help on function stu in module __main__:

stu(name, age, *args)
    这是文档
    第一行
    第二行
    第三行




Out[50]:

'\n    这是文档\n    第一行\n    第二行\n    第三行\n    '

备注:以上内容均是观看北京图灵学院免费python视频课程摘抄的笔记

上一篇 下一篇

猜你喜欢

热点阅读