python笔记 函数与参数

一个比较大的工程中的思想就是模块化
定义:
代码的一种组织形式,一个函数一般完成一项特定的功能
0000000000000000分隔符00000000000000000000
函数的使用:
函数需要先定义,使用函数,俗称调用
0000000000000000分隔符00000000000000000000
定义一个函数:

def func():
	print("我是一个函数")
	print("我要完成一定的功能")
	print("我要结束了")

1.def关键字,后面跟一个空格
2.函数名,自己定义,起名要遵循命名规则,约定俗成,大驼峰命名只给类用
3.后面的括号和冒号不能省略,括号内可以有参数
4.函数内所有代码缩进
一个函数必须有相同的缩进,如果下一行没有缩进 则表示这个函数已经结束
0000000000000000分隔符00000000000000000000
函数的调用:
直接函数名后面跟括号就好了

func()

0000000000000000分隔符00000000000000000000
函数的参数和返回值
参数:负责给函数传递一些必要的数据或者信息
形参和实参
形参基本上就是个占位符
实参,在调用函数的时候输入的值
在这里插入图片描述
返回值:函数的执行结果
使用return关键字
如果没有return,默认返回一个None
函数一旦执行return语句,则无条件返回
在这里插入图片描述
return案例2:
有两个return,第一个return直接结束此函数在这里插入图片描述

查询函数帮助文档:
help(print)
这个函数可以查看print函数的说明
print(value,end=" ") 使用空格分割打印结果

九九乘法表:
在这里插入图片描述

#3#如果能用for循环优先用for

参数
http://www.cnblogs.com/bingabcd/p/6671368.html
【参考资料】
python参考资料:headfirst python—>零基础入门学python(小甲鱼)—>习题—>后期可以看一下腾讯公开课
参数分类:
普通参数
默认参数
关键字参数
收集参数
#普通参数
参见上面的各种例子,定义的时候直接定义变量明,调用的时候把变量或者值放入指定位置
def 函数名 (参数1,参数2 , 。。。。。。):
函数体
0000000000000000分隔符00000000000000000000
调用:
函数名(value1 , value2 , 。。。。。。)
调用的时候,具体值参考的是位置,按位置赋值

#默认参数
形参带有默认值,调用的时候,如果没有对相应形参赋值,则使用默认值
默认参数的写法:
def func_name(p1=v1, p2=v2, …):
func_block
调用1
func_name()
调用2
value1=100
value2=200
func_name(value1,value2)

#默认参数示例

在这里插入图片描述

#关键字参数
语法:
def func(p1=v1, p2=v2 …):
func_body

调用函数:
func(p1=value1, p2=value2, ......)
比较麻烦,但也有好处:
	不容易混淆,一般实参和形参只是按照位置一一对应即可,容易出错
	使用关键字参数,可以不考虑参数的位置
#关键字参数代码
以前的:
普通参数,只按照位置传递
	def stu(name, age, addr):
		print("I am a student")
		print("我叫{0},我今年{1}岁了,我住{2}").format(name, age, addr))
	n = "jingjing"
	a = 18
	addr = "我家"
	stu(n, a, addr)

写入关键字参数:

	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 = "jingjing"
	a = 18
	addr = "我家"
	stu_key(name=n, age=a, addr= addr)
	stu_key(age=a, name=n, addr= addr)

#收集参数
把没有位置,不能和定义式的参数位置相对应的参数,放入一个特定的数据结构中
语法:
def func(*args):
func_body
可以按照list使用方式访问args得到传入的参数
调用:
func(p1, p2, p3, …)

参数名args不是必须这么写,一般推荐这么写(约定俗成)
参数名args前需要有星号*
收集参数可以和其他参数共存
#收集参数代码
#函数模拟一个学生进行自我介绍,但具体内容不清楚
#args把他看作一个list 列表
def stu( *args):
	print("Hello 大家好,我自我介绍一下,简单说两句:")
	#type函数的作用是检测变量的类型
	print(type(args))
	for item in args:
		print(item)

stu("liuying", 18, "北京通州区", "喜欢王晓静", "single")
stu("周大神")

在这里插入图片描述
运行结果,如果是空的,没有实参,也可以运行
说明手机参数可以不带任何实参调用,此时手机参数为空tuple
收集参数如果使用关键字参数调用,会出现问题
在这里插入图片描述
##收集参数之关键字收集参数
把关键字参数按字典格式存入收集参数
语法:
def func( ** kwargs)
func_body

调用:
func(p1=v1, p2=v2, p3=v3, .............)

kwargs一般约定俗成
调用的时候,把多余的关键字参数放入kwargs
访问kwargs需要按字典个事访问
#收集参数案例:

#自我介绍
#调用的时候需要使用关键字参数调用
def stu( **kwargs):
	#在函数体内对于kwargs的使用不用带星号
	print("Hello 大家好,就先自我介绍一下")
	print(type(kwargs))
	#对于字典的访问,python2和python3有区别
	#下面是python3访问字典的方法:
	for k,v in kwargs.items():
		print(k, "---", v)

stu(name="liuying", age=19, addr="北京大通州区", lover="王晓静", work="Teacher")
print("*************************")
stu(name="周大神")
#字符串的乘法:
print("*" * 20)

运行结果:
在这里插入图片描述

#收集参数可以为空,运行结果正常显示,无影响:
在这里插入图片描述
看到p7 50:36

猜你喜欢

转载自blog.csdn.net/ykallan/article/details/84563251