一个比较大的工程中的思想就是模块化
定义:
代码的一种组织形式,一个函数一般完成一项特定的功能
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