函数
初识函数
函数初识
# 例子
def new_len():
count = 0
for el in s:
count += 1
print(count)
new_len() # "函数名()" 函数的 执行者 和 调用者. 写几次执行几次
- 函数:以功能为导向,并且一个函数封装一个功能.(登录,注册,文件的改的操作,评论,日记)
- 函数减少了代码的重复性,增强了代码的 可读性 (可描述性) ---函数解决了是什么?
函数的结构
'''
==============================
def 关键字: 定义一个函数.(关键字 一些特殊意义的单词 for while if else.......) 紧跟一个空格.
==============================
new_len函数名: (限制) 与变量命名规范一致. 一定要具有可描述性.
==============================
括号"()" :结构需要, 传参用
==============================
冒号":" :分割符 分割函数名和函数体
==============================
"tab"键 :四个空格.缩进
==============================
'''
函数的调用(函数的执行)
# 例子
def new_len():
count = 0
for el in s:
count += 1
print(count)
new_len() # "函数名()" 函数的 执行者 和 调用者. 写几次执行几次
❗必须 "函数名()" 才是函数的执行者和调用者. 只写函数名不行!!!
❗函数 写在同一代码块 函数必须放前面后面才能执行
函数的返回值
return 第一个作用:结束函数 (只能在函数中用)
# 例子
s = [1, 2, 5, 3, 6]
def new_len():
count = 0
for el in s:
count += 1
print(count)
print(count) # ---输出到这 return 结束函数
return
print(count)
print(count)
new_len() # "函数名()" 函数的 执行者 和 调用者. 写几次执行几次
return 第二个作用:给函数的执行者返回具体的值
# 例子
s = [1, 2, 5, 3, 6]
def new_len():
count = 0
for el in s:
count += 1
print(count)
print(count) # ---输出到这 return 结束函数
return count
print(count)
print(count)
c = new_len()
print(c)
函数中没有 return 或者只有一个 return,函数的执行者得到的是None
def func():
return
print(func()) #None
def func1():
a = 1
print(func1()) #None
函数中return后面是 单个值 , 函数的执行者 得到的是 这个值
def func():
return "hello"
print(func()) # hello 类型字符串
函数中return后面是 多个值 , 函数的执行者 得到的是 多个值组成的元组
def func1():
return "hello", "world", 1+2+3
print(func1()) #('hello', 'world', 6) 类型元组
函数的传参
- 让函数函数具有拓展性
l1 = [1, 2, 5, 3, 6]
def new(a): # 定义函数时:参数:形参
print(a)
return "函数"
# new(l1) #函数的调用者:参数:实参
print(new(l1))
实参角度:
- 位置参数
- 关键字参数
- 混合参数
- 位置参数 (弊端:参数多的时候 必须保证顺序正确)
def meet(x, y, z):
print('左划一下')
print('又划一下')
print(f'寻找目标 x:{x} y:{y} z:{z}')
print('分析')
print('锁定')
print('清除')
meet(10,20,30)
============================================================
def compare(x, y):
print(x if x > y else y)
compare(int(input("第一个数")), int(input("第二个数")))
============================================================
def compare(x, y):
return x if x > y else y
print("更大的数是:",compare(int(input("第一个数")), int(input("第二个数"))), end="")
============================================================
def compare(x, y):
return x if x > y else ("两数相等" if x == y else y)
print(compare(int(input("第一个数")), int(input("第二个数"))), end="")
============================================================
- 关键字参数 (必须一一对应)
def meet(x, y, z):
print('左划一下')
print('又划一下')
print(f'寻找目标 x:{x} y:{y} z:{z}')
print('分析')
print('锁定')
print('清除')
return f"x:{x} y:{y} z:{z}"
print(meet(x=10, z=30, y=20))
- 混合参数 (位置和关键字混着用 关键字参数一定要在位置参数后面)
- 函数名(位置参数 ,关键字参数) 否则报错
def meet(x, y, z):
print('左划一下')
print('又划一下')
print(f'寻找目标 x:{x} y:{y} z:{z}')
print('分析')
print('锁定')
print('清除')
return f"x:{x} y:{y} z:{z}"
print(meet(10, 30, y=20))
形参角度:
- 位置参数
- 默认参数
- 动态参数
- 仅限关键字参数
- 位置参数 同 实参
- 默认参数 (一定在位置参数的后面,不传参即沿用默认的参数)
- 为什么要用默认参数 无所谓 经常用的 设置 约定俗称的
- open() #mode默认 r 读模式
def meet(x, y, z=0):
print('左划一下')
print('又划一下')
print(f'寻找目标 x:{x} y:{y} z:{z}')
print('分析')
print('锁定')
print('清除')
return f"x:{x} y:{y} z:{z}"
print(meet(10, y=20, z=10))