函数介绍
什么是函数? 为什么要有函数
1. 组织结构不清晰可读性很差
2. 代码冗余
3. 管理维护难度极大扩展性差
具备某一功能的工具就是程序中的函数
事先准备工具的过程即为函数的定义
拿来就用》》》》函数的调用
多以函数必须遵循先定义, 在调用
定义函数
1, 语法
def: 关键字(函数名(参数 1, 参数 2,
...))
函数名: 是用来引用调用函数, 函数名的命
名必须反应出函数的功能
""" 文档描述
"""(推荐写上, 提高函数的可读性)
代码块: 函数的功能实现代码
return: 函数的返回值
定义变量... 定义函数 一样
函数名 () 就是在调用函数
定义函数的三种类型:
有参数的函数: def 名字 () 参数是函数体代码接受外部传入值的一种方式
name =
无参函数: 当函数体的代码逻辑不需要函数的调用者参入值的情况下, 就无参
定义时无参, 调用也不需要参数
- name = input('username:').strip()
- pwd = input('password:').strip()
- print(name.pwd)
功能分得越细越好管理
- pwd_of_db = '1234'
- def interactive():
- username_inp = input('please input your username:').strip()
- pwd_inp = input('Please input your password:').strip()
- return username_inp,pwd_inp
- def auth(uname,pwd):
- if uname== u_name_of_db and pwd == pwd_of_db:
- print('Landed successfully')
- else:
- print('Login failed')
- res = interactive()
- x= res[0]
- y =res[1]
- auth(x,y)
空函数:
碰到一些功能卡住. 可以先停下慢慢来
调用函数
先定义, 后调用
若没有定义而直接调用, 会直接报错.
根据函数找到函数的内存地址, 如何执行函数代码
在定义阶段不执行函数的代码
函数的返回值:
没有 return, 返回 none. 相当于 return none
return 1: 返回 1
return 1,2,(1,2)返回 1,2,(1,2)
notes:
返回值无类型限制
函数内可以有多个函数, 但是一次后立即结束. 并把 return 后的值作为本次调用的值的返回值.
- (argument)
- def foo(x,y,z):
- print(x,y,z)
- foo(1,2)
- def foo(x,y,z):
- print(x,y,z)
- foo(x=1,y=2,z=3)
- def register(name,age,sex='male'):# 定义阶段已经有值, 调用阶段可以不用传值
- print(name,age,sex)
- register('alex',12,)
- register('fan',20,)
- register('frank',222,'female')
- SyntaxError: non-default argument follows default argument
- m =10
- def func(x,y = m):
- print(x,y)
- m = 1111# 默认参数的值在定义阶段已经固定死, 以后不会改变前面的值
- func(1,11)
- # 默认参数的值应该设置为不可变类型
- m =10
- def func(x,y = m):
- print(x,y)
- m = 1111# 默认参数的值在定义阶段已经固定死, 以后不会改变前面的值
- func(1,11)
- # 默认参数的值应该设置为不可变类型
- def register(name,hobbies,L = None)
- if L is None:
- L = []
- L.append(hobbies)
- print(name,L)
- register('fan','play',)
- register('fran','music',)
来源: http://www.jianshu.com/p/489ca3fc2934