Python中,我们是这样定义函数的:
def function(para1, para2):print("func start")print(para1)print(para2)print("func end")print("让技术总监面试 求职者")return "func return"def 是关键字 表示定义一个函数
后面是函数的名字,紧接着后面需要一个括号 ,这个括号中间,根据需要可以有 参数。函数要返回结果,就必须要使用 return 关键字,后面加上返回的结果对象。
最后是一个冒号,下面的缩进的代码表示这个函数名字代表的具体动作是什么,称之为函数体。
函数体的代码是需要缩进的。建议缩进四个空格。
这样定义好了以后,后面的代码要指代这个面试的流程,只需要写名字 function 就行了。 比如:
print(function)运行一下,发现会输出内容如下
<function function at 0x05292468>表示这个 function 是 一个函数类型的对象。
特别要注意的是,解释器执行到 定义函数 的语句时,并不会执行函数体里面的代码。
要执行函数体里面的代码,必须 调用函数。
2. 函数调用在函数名后面加上括号,比如,要执行 function 这个名字代表的动作,就在后面加上括号 function()
如下:
function("para1","para2")# 运行结果$ python main.pyfunc startpara1para2func endfunc returnfunction() 就叫 调用函数 function ,有时也叫做 执行函数 function。
当解释器 执行到这行调用函数的代码时,就会跑到 函数 function 里面,去执行函数里面的语句。
函数必须先定义,后面才能调用。
如果一个函数定义,里面并没有写return语句,像这样
def func1():print('你好')print(func1()) # 运行结果$ python main.py你好None那么该函数调用后会返回一个None对象。 None对象是Python内置的,表示没有数据内容的对象。
3. 缺省值参数可以在定义函数的时候,给它加上缺省值,像下面这样:
def func(para1, para2=60):...这样,在调用这个函数的时候,如果para2参数还是传入60 就可以不用写了,像这样
func(80)解释器发现该函数参数para2有缺省值,就会自动帮我们传入缺省值60 给参数para2。
当然如果我们调用的时候传入了参数,比如像下面这样,解释器就会将 70 传给参数score。
func(50, 70)函数的参数定义,一旦有缺省值后,后面所有的参数必须都有缺省值
下面这样的定义是错误的
def func(arg1, arg2, arg3=3, arg4):...arg4 前面的参数 arg3 已经有缺省值,所以必须也要有缺省值,比如
def func(arg1, arg2, arg3=3, arg4='hello'):... 4. 指定参数名调用函数这样的一个函数
def func(arg1, arg2, arg3=3, arg4='hello'):print(arg1)print(arg2)print(arg3)print(arg4)我们调用的时候,可以这样
func(1,2,3,'hello')也可以这样 指定参数名 去调用
func(arg1=1,arg2=2,arg3=3,arg4='hello')指定参数名调用的时候,可以颠倒参数的次序
func(arg2=1,arg3=2,arg1=3,arg4='hello')也可以这样混合使用
func( 1, 2, arg3=3,arg4='hello')但是一旦某个参数指定了参数名,后面所有的参数必须指定参数名!!!
5. 变量的有效范围局部变量
定义在某个函数内部的变量,称之为 局部变量 。
函数的参数变量也是局部变量。
局部变量有效范围只能是该函数内部。
全局变量
定义在所有函数外部的变量,称之为 全局变量 。
全局变量的有效范围是整个模块文件。
函数内部代码可以访问全局变量的。
范围覆盖
大家再来看这样一个例子
upChars = '零壹贰叁肆伍陆柒捌玖'def getZh(num):upChars = '0123456789'print('对应的字符是:' + upChars[num])getZh(5) # 运行结果$ python main.py对应的字符是:5在函数内部,如果局部变量和全局变量同名,使用的是局部变量。
6. 常见内置函数我们通常会把常用的代码放到函数里面,这样要使用这些代码 ,只需要调用那些函数就可以了。
Python的设计者 为我们总结了一些常用的函数,放到了Python解释器中,这些函数我们直接就可以使用。
前面我们学过的print 就是其中之一。
内置函数可以在Python的官方文档查看到,点击这里查看官方文档。
abs()dict()help()min()setattr()all()dir()hex()next()slice()any()divmod()id()object()sorted()ascii()enumerate()input()oct()staticmethod()bin()eval()int()open()str()bool()exec()isinstance()ord()sum()bytearray()filter()issubclass()pow()super()bytes()float()iter()print()tuple()callable()format()len()property()type()chr()frozenset()list()range()vars()classmethod()getattr()locals()repr()zip()compile()globals()map()reversed()__import__()complex()hasattr()max()round() delattr()hash()memoryview()set()常用的几个
int('1000') # 返回整数1000int(3456.23) # 返回整数3456float('1000') # 返回 浮点数 1000.0float('6.345') # 返回 浮点数 6.345str(1000) # 返回字符串 '1000'str(1000.23) # 返回字符串 '1000.23'len('你好!') # 计算字符串的长度,返回值 3type(3) # 返回 <class 'int'>type('hello') # 返回 <class 'str'>**关于终端输入 input **
input函数返回值是用户输入的字符串,不包括最后的回车符。字符串是不能直接进行数学运算的
要解决这个问题,可以使用两个内置函数, int 和 str