函数

函数

初识函数

函数初识

# 例子
def new_len():
    count = 0
    for el in s:
        count += 1
    print(count)
new_len() # "函数名()" 函数的 执行者 和 调用者. 写几次执行几次

  1. 函数:以功能为导向,并且一个函数封装一个功能.(登录,注册,文件的改的操作,评论,日记)
  2. 函数减少了代码的重复性,增强了代码的 可读性 (可描述性) ---函数解决了是什么?

函数的结构

'''
==============================
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))

实参角度:

  • 位置参数
  • 关键字参数
  • 混合参数
  1. 位置参数 (弊端:参数多的时候 必须保证顺序正确)
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="")
============================================================
  1. 关键字参数 (必须一一对应)
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))
  1. 混合参数 (位置和关键字混着用 关键字参数一定要在位置参数后面)
    • 函数名(位置参数 ,关键字参数) 否则报错
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))

形参角度:

  • 位置参数
  • 默认参数
  • 动态参数
  • 仅限关键字参数
  1. 位置参数 同 实参
  2. 默认参数 (一定在位置参数的后面,不传参即沿用默认的参数)
    • 为什么要用默认参数 无所谓 经常用的 设置 约定俗称的
    • 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))
posted @ 2019-06-17 20:02  求舟  阅读(116)  评论(0编辑  收藏  举报