具备某一功能的工具============>函数
工具的使用:
事先准备好工具===========>函数的定义
遇到应用场景拿来就用======>函数的调用
2.1 程序的组织结构不清晰,可读性差
2.2 如果要用到重复功能,只能拷贝功能的实现代码,造成代码冗余
2.3 可扩展性差
3.1 定义函数
申请内存空间把函数体代码保存下来,然后把内存地址绑定给函数名,函数名=函数的内存地址
def sayhai():
print("你好孙悟空!")
print("你好猪八戒!")
3.2 调用函数
函数名() ===>函数的内存地址(), 会触发函数体代码的运行
sayhai()
你好孙悟空!
你好猪八戒!
思考
Python
已经知道函数的存在NameError: name 'f' is not defined
(名称错误:f这个名字没有被定义) 3.1 无参函数
def sayhai():
print("你好孙悟空!")
print("你好猪八戒!")
3.2 有参函数
def sayhai(i):
print("你好%s!" % i)
3.3 空函数
def func():
pass
函数可以后三种形式的返回值
单纯的调用一下函数就好了
def sayhi(s,n):
s = '-'
n = 20
print(s*n)
print('hello')
print(s*n)
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(11,22) * 12
print(max(12, 11))
函数的使用一定要用两个阶段去看:
1、定义阶段:只检测与法,不执行代码
2、调用阶段: 执行函数体代码
如果发生的语法错误,定义阶段会马上检测出来
如果发生的不是语法错误,而是逻辑错误,只能在调用阶段检测到
在定义函数时,括号内定义的变量名,称之为形式参数,简称形参(变量名)
def func(x,y):
x=1
y=2
print(x)
print(y)
在调用函数是,括号内代入的值,称之为实际参数,简称实参(变量值)
在python中参数的种类
1、形参变量只有在被调用时才分配内存单元,在调用结束时,就会释放出所分配的内存单元。所以,形参只能在函数内部才有效;
2、实参是:常量、变量、表达式、函数等,实参是何种类型的量,当开始在进行函数调用时,都必须有确定的值;
3、实参和形参在数量,类型上和顺序上必须严格一致,不然就会发生类型不匹配。
4、在一般传值调用的机制中只能把实参传送给形参,因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。
在函数定义阶段按照从左到右的顺序依次定义形参(变量名),称之为位置参数
特点:必须被传参
def func(x,y):
print(x,y)
func(1,2)
func(1) # 少一个不行
func(1,2,3) # 多一个也不行
在函数调用阶段按照从左到右的顺序依次定义实参(传入的变量值),称之为位置实参。
特点:按照位置传值,一 一对应
def dept_emp(department, employees):
dept_emp = department + '**** '+employees
return dept_emp
dept_emp('marketing','lisan')
在函数调用阶段按照key:value的形式为指定的形参名传值,该形式称之为关键字实参
为了避免位置参数带来的混乱,调用参数时可以指定对应参数的名字,甚至可以采用与函数定义不同的顺序调用:
特点:在传值时可以完全打乱顺序,但是仍然能够指名道姓地为指定的形参传值
注意:
1、位置实参必须放在关键字实参的前面
2、不能为同一个形参重复赋值
# 1、
def func1(name, age, gender):
print(name)
print(age)
print(gender)
func1("sss", age=18, "male") # positional argument follows keyword argument
# 2、
func1("sss", age=18, age=22, gender="male") # SyntaxError: keyword argument repeated
在函数定义阶段就已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参。
特点:定义阶段就已经被复制意味着在函数调用阶段可以不用为其赋值
注意:
1、默认形参应该放在位置形参的后面
2、默认形参的值通常是不可变类型
def f(x, k=5, b=6):
print("x:{} k:{} b:{}".format(x, k, b))
y = k * x + b
return y
f(x=5, k=5, b=6)
本文地址:https://blog.csdn.net/A1L__/article/details/107428911
如对本文有疑问, 点击进行留言回复!!
Python笔记-UiSelector中resourceId定位方式
【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果
荐 用Django全栈开发——08. 使用AdminLTE开发前端登录页面
网友评论