五、初识python编程-函数(课时14-16、课时22)

一、函数

  • 函数的使用: 先定义函数,再调用函数
  • 定义函数:
    1.def后面加一个空格
    2.函数名自己定义,约定俗成,大驼峰只给类命名
    3.后面括号省略号不能省略
    4.函数内所有代码缩进
  • 函数的调用: 直接写出函数名字,后面括号不能省,括号内容据情况。
#定义函数
def liyu():
    print("永远的")
    print("大魔王")
#使用函数
liyu()

二、函数的参数和返回值

**一、参数:**负责给函数传递一些必要信息或数据。
1.形参(形式参数):函数定义的时候用到,没有具体指,只是一个占位符
2.实参(实际参数):在调用函数的时候输入的值

def hello(person): #定义函数,person无实际意义,为形参
	print("{0},你好帅啊".format(person)) #format表示把person里面的值替换掉大括号
	print("{},我要给你生猴子".format(person))

a = "李彧" #调用函数,把a作为实参传入
hello(a)
#结果就为李彧,你好帅啊
#       李彧,我要给你生猴子

二、返回值: 函数执行的一个结果

  • 用return表示
  • 如果没有return关键字,系统自动返回None,但推荐使用return None
  • return一旦执行,函数立即结束

三、Help函数

也是一个函数,帮助你解决问题,如函数的用法

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.

sep后面的表示字符串插入在变量之间,默认是空格。
end后面的表示是最后一个值后面附加了字符串,默认是新的一行。

#九九乘法表 version1.0
def jiujiu():
	for o in range(1,10): #控制外循环,从1——9
		for i in range(1, o + 1): #控制内循环,从1到跟行数相等的数字
			print(o * i, end="  ") #print有个特性是打印出来过后会自动换行,运用end关键字不使其换行而是两个空字符串
		print() #注意与上一个for同级,在一行打印完后换行。print打印空就是换行
	return None

#九九乘法表 version2.0
def printLine(Line_num):
	for i in range(1,Line_num + 1):
		print(Line_num * i, end="  ")
	print()

def jiujiu():
	for o in range(1,10):
		printLine(o)
	return None

四、参数详解

1.普通参数/位置参数

def normal_para(one, two, three):
	print(one + two)
	print(one + two + three)
	return None
normal_para(1, 5, 7) #注意调用参数时参数个数要与定义时的参数个数相等
#结果为6,13

2.默认参数

def default_para(four, five, six=66): #默认参数就是赋予一个默认值给一个参数,调用参数就可以不调用默认参数,但是他也有默认值。但调用时重新赋值,将采用重新赋值的值
	print(four + five)
	print(four + six)
	return None
default_para(4, 5) #调用参数与定义参数个数不等,但是默认参数six=66
#结果为9,70
default_para(4, 5, 6) #这里调用默认参数six,但赋值6给他,不采用原先赋值的默认值
#结果为9,10

3.关键字参数

def key_para(seven, eight, nine):
	print(seven + eight)
	print(seven + eight + nine)
	return None
key_para(eight=8, seven=7, nine=9) #关键字参数调用时将值赋予给命名的参数,这样就防止在调用时记不住相应参数的位置
#结果已依旧为15,24

4.收集参数

把没位置的、不能和定义参数相对应的参数,放入一个特定的数据结构。

def zhangchun1(*args):
	print("hahaha")
	print(type(args))
	for i in args:
		print(i)
zhangchun1("大家好","我是来自永川的小春","今年19岁啦")
'''结果为
hahaha
<class 'tuple'>
大家好
我是来自永川的小春
今年19岁啦
'''
#收集参数可以不带实参调用,此时为一个空元组
zhangchun1()
'''结果为
hahaha
<class 'tuple'>
'''

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

def zhangchun2(**kwargs):
	print("哈哈哈,没想到吧,又是我")
	print(type(kwargs))
	for k,v in kwargs.items():
		print(k, "---", v)
zhangchun2(name="张春", age=19, hobby="王者荣耀,看电影", address="永川")
'''结果为
哈哈哈,没想到吧,又是我
<class 'dict'>
name --- 张春
age --- 19
hobby --- 王者荣耀,看电影
address --- 永川
'''
#也可以不调用实参

6.混合使用

使用规则:普通,关键字参数优先,多余的再打包。

def stu(name, age, *args, hobby="王者荣耀", **kwargs):
	print("又又又又是我来作自我介绍啦:")
	print("我叫{0},今年{1}岁啦".format(name, age))
    if hobby == "王者荣耀":
    	print("我的爱好是打王者荣耀,我王者打得可溜了,我带你们打")
    else:
    	print("我是实在没有爱好了")
	for i in args:
		print(i)
	
	print("*" * 50)

	for k,v in kwargs.items():
		print(k, "---", v)
	 print("*" * 50)
stu("张春", 19, "你知道吗", "我也喜欢小静", hobby="王者荣耀", address="", shortcoming="so cool")
'''结果为
又又又又是我来作自我介绍啦:
我叫张春,今年19岁啦
我的爱好是打王者荣耀,我王者打得可溜了,我带你们打
你知道吗
我也喜欢小静
**************************************************
address --- 永川
shortcoming --- so cool
**************************************************
'''

7.收集参数的解包

把参数放进list/dict中,再把list/dict放入收集参数中

def ceshi(*args):
	n = 0
	for i in args:
		print(n)
		n += 1
		print(type(i))
		print(i)
		
l = ["张春", "黄俊华", 19, 21]
ceshi(l)
'''结果为
0
<class 'list'>
['张春', '黄俊华', 19, 21]
'''
#此时,args表示的形式为字典里的一个list类型元素,即args = (["张春", "黄俊华", 19, 21], ...)
#此时的使用,就需要解包,在l前面加一个*,对dict解包加两个*
ceshi(*l)
'''结果为
0
<class 'str'>
张春
1
<class 'str'>
黄俊华
2
<class 'int'>
19
3
<class 'int'>
21
'''

五、函数文档

对当前函数提供参考信息。一般在定义的第一行使用三引号说明。
用help或 .__doc__查看

def hanshuwendang():
    '''这是一个函数文档
    您知道吗
    我猜您不知道
    哈哈哈
    '''
    pass
help(hanshuwendang)
hanshuwendang.__doc__
'''结果分别为
Help on function hanshuwendang in module __main__:

hanshuwendang()
    这是一个函数文档
    您知道吗
    我猜您不知道
    哈哈哈
*****************************************************************
'这是一个函数文档\n    您知道吗\n    我猜您不知道\n    哈哈哈\n    '
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值