python 入门 Day 10
Day 10
一、文件修改的两种模式
二、函数的基本使用
1、什么是函数
具备某一功能的工具============>函数
工具的使用:
事先准备好工具===========>函数的定义
遇到应用场景拿来就用======>函数的调用
2、为何要有函数
2.1 程序的组织结构不清晰,可读性差
2.2 如果要用到重复功能,只能拷贝功能的实现代码,造成代码冗余
2.3 可扩展性差
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
四、函数调用的三种格式
return
函数可以后三种形式的返回值
- return值:返回的就是该值的本身
- return值1, 值2, 值3 返回一个元祖
- 没有return 默认返回None
4.1 语句形式
单纯的调用一下函数就好了
def sayhi(s,n):
s = '-'
n = 20
print(s*n)
print('hello')
print(s*n)
4.2 表达式形式
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(11,22) * 12
4.3 可以吧函数的调用当做值传给两外一个函数
print(max(12, 11))
总结:
函数的使用一定要用两个阶段去看:
1、定义阶段:只检测与法,不执行代码
2、调用阶段: 执行函数体代码
如果发生的语法错误,定义阶段会马上检测出来
如果发生的不是语法错误,而是逻辑错误,只能在调用阶段检测到
函数的参数分为两大类:
一、形参:
在定义函数时,括号内定义的变量名,称之为形式参数,简称形参(变量名)
def func(x,y):
x=1
y=2
print(x)
print(y)
二、实参:
在调用函数是,括号内代入的值,称之为实际参数,简称实参(变量值)
在python中参数的种类
1、形参变量只有在被调用时才分配内存单元,在调用结束时,就会释放出所分配的内存单元。所以,形参只能在函数内部才有效;
2、实参是:常量、变量、表达式、函数等,实参是何种类型的量,当开始在进行函数调用时,都必须有确定的值;
3、实参和形参在数量,类型上和顺序上必须严格一致,不然就会发生类型不匹配。
4、在一般传值调用的机制中只能把实参传送给形参,因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。
在python中参数的种类
1、位置参数:
(1)位置形参:
在函数定义阶段按照从左到右的顺序依次定义形参(变量名),称之为位置参数
特点:必须被传参
def func(x,y):
print(x,y)
func(1,2)
func(1) # 少一个不行
func(1,2,3) # 多一个也不行
(2)位置实参:
在函数调用阶段按照从左到右的顺序依次定义实参(传入的变量值),称之为位置实参。
特点:按照位置传值,一 一对应
def dept_emp(department, employees):
dept_emp = department + '**** '+employees
return dept_emp
dept_emp('marketing','lisan')
2、关键字实参:
在函数调用阶段按照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
3、默认形参:
在函数定义阶段就已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参。
特点:定义阶段就已经被复制意味着在函数调用阶段可以不用为其赋值
注意:
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