函数
1 # 函数需要先定义,关键字 def 2 def func(): 3 print("我是一个函数") 4 5 # 函数的调用 6 func()
执行结果:
我是一个函数
内建函数(内置函数)
help(), print(), format(), ...
# 查找函数帮助文档 # 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.
# 打印九九乘法表,【这里有的没有对齐,以后学会后更新】
for row in range(1, 10):
	   # 打印一行
    for col in range(1, row+1):
		      print("{0}x{1}={2}".format(col,row,row * col), end="  ")
	   # 换行	
	   print()
1x1=1 
1x2=2  2x2=4  
1x3=3  2x3=6  3x3=9  
1x4=4  2x4=8  3x4=12  4x4=16  
1x5=5  2x5=10  3x5=15  4x5=20  5x5=25  
1x6=6  2x6=12  3x6=18  4x6=24  5x6=30  6x6=36  
1x7=7  2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49  
1x8=8  2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64  
1x9=9  2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81
# version 2.0 使用函数
def print_a_line(row):
# 打印一行
for col in range(1, row+1):
print("{0}x{1}={2}".format(col,row,row * col), end=" ")
# 换行
print()
# 调用函数
for row in range(1, 10):
print_a_line(row)
函数的参数、返回值
推荐查看:Python进阶04 函数的参数对应!!
推荐:老师讲课博客目录,这个厉害了,好多python博客文章!
-形参:占位
-实参:调用函数时输入的值
-返回值:函数的执行结果
-关键字:return,没有默认返回None
-执行return语句后,无条件返回
def hello(person):
print("{},你怎么了?".format(person))
man = "嗨"
hello(man)
嗨,你怎么了?
def hello(person):
print("{},你怎么了?".format(person))
return "我没事。"
man = "嗨"
hello(man)
嗨,你怎么了?
我没事。
普通参数or位置参数
调用时,具体值参考的是位置,按位置赋值
默认参数
形参带有默认值;如果调用时没有对相应形参赋值,则使用默认值
关键字参数
一般实参和形参只按照位置一一对应即可,而使用关键字参数,可以不考虑参数位置
# 关键字参数案例 def stu(name, age, addr): print("I am a student") print("我叫{0},我今年{1}岁了,我住{2}。".format(name, age, addr)) n = "小明" a = 18 addr = "学校" # 普通参数,只按照位置传递,容易出错 stu(a, n, addr) print("************************")
def stu_key(name="No name", age=0, addr="No addr"):
print("I am a student")
print("我叫 {0}, 我今年 {1}岁了, 我住{2}".format(name, age, addr)) n = "小明" a = 18 addr = "学校"
# 关键字参数
stu_key(age=a, name=n)
print("************************")
stu_key(addr=addr)
执行结果:
I am a student
我叫18,我今年小明岁了,我住学校。
************************
I am a student
我叫 小明, 我今年 18岁了, 我住No addr
************************
I am a student
我叫 No name, 我今年 0岁了, 我住学校
可变参数 * , **
也有称收集, 包裹 对应 解包裹,及 混合使用 参见:python的位置参数、默认参数、关键字参数、可变参数区别
一般使用 *args 和 **kwargs, args、kwargs可变
def stu(*args): for item in args: print(item) # 这里 args 格式是 元组 tuple stu(16, 18, "A") stu(19) stu() print("B")
执行结果:
16
18
A
19
B
def func(**kwargs): for k,v in kwargs.items(): print(k,"---",v) # 这里 kwargs 格式是 字典 dict
# 关键字参数形式
func(age=18,b="B",c=3,d="D")
age --- 18
b --- B
c --- 3
d --- D
这里有个自己遇到的坑:input()返回结果都只是一个字符串
def test(*args): print(args) print(len(args)) # 仔细对比下面两句 test(1,2,3) # 输出 args 和它的长度: # (1,2,3) # 3 test(input()) # 输入 1,2,3 # 会输出: # ('1,2,3',) # 1
函数文档
作用是提供函数相关参考信息
写法:在函数开始的第一行使用三引号字符串定义符,具有特定格式
查看:使用help(),或者使用doc
# 文档案例 def func(name, age=18, *args, **kwargs): ''' 这是第一行 这是第二行 这是第三行 ''' pass# 查看函数文档 help(func)
print("*" * 20)
func.__doc__
print(func.__doc__)
Help on function func in module __main__:
func(name, age=18, *args, **kwargs)
    这是第一行
    这是第二行
    这是第三行
********************
 这是第一行
    这是第二行
    这是第三行