#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 学习网站:www.liaoxuefeng.com
#****************************************************
# Python3 函数 *
#****************************************************
print ("--------------------分割线------------------")
#============
# 调用函数
#============
'''
要调用一个函数,需要知道函数的名称和参数,可以从python官方网站查看
文档:https://docs.python.org/3/library/functions.html
也可以在交互式命令行通过help(function_name)查看函数的帮助信息
'''
print( abs(100), abs(-100), abs(12.34) ) # 100 100 12.34
'''
如果函数传入的参数个数不对,会报TypeError的错误,并且会明确说明
参数个数应该是几个,但我们给出了几个。
print( abs(100,99) )
上面语句执行:TypeError: abs() takes exactly one argument (2 given)
'''
'''
如果函数传入的参数类型不对,也会报错TypeError
print( abs('string') )
上面语句执行: TypeError: bad operand type for abs(): 'str'
'''
'''
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量
相当于给这个函数起了一个“别名”
'''
fun1 = abs
print( fun1(-100) ) # 100
print ("--------------------分割线------------------")
#============
# 定义函数
#============
'''
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:
然后在缩进块中编写函数体,函数的返回值用return语句返回。
'''
def my_abc(x):
if x >= 0:
return x
else:
return -x
print( my_abc(-10.11) ) # 10.11
'''
如果已经把my_abs()的函数定义保存为abstest.py文件了,那么可以在该文
件的当前目录下启动python解释器,用from abstest import my_abs来导入
my_abs()函数,注意abstest是文件名(不含.py扩展名)
'''
# 执行到return时,函数执行完毕并返回。如果没有return语句,函数执行
# 完毕后也会返回结果,只是结果为None。return None可以简写为return。
def no_return(t):
pass
print( no_return('test') ) # None
def ret_none1(t):
return None
print( ret_none1('test') ) # None
def ret_none2(t):
return
print( ret_none2('test') ) # None
print ("--------------------分割线------------------")
# 如函数参数、函数个数输入错误,系统会报错,我们自己也可以定义参数
# 类型检查,数据类型检查可以用内置函数isinstance()实现:
def my_abs_check(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
# print( my_abs_check('str') )
'''
执行结果:
TypeError: bad operand type
'''
# 返回多个值
def ret_two_val(x):
return x, x+1
print( ret_two_val(5) ) # (5, 6)
# 但其实这只是一种假象,函数返回的仍然是单一值:
vals = ret_two_val(100)
print( vals ) # (100, 101)
'''
原来返回值是一个tuple,但是,在语法上,返回一个tuple可以省略括号,而
多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,python的函
数返回多值其实就是返回一个tuple,但写起来更方便。
'''
'''
注意:
1. 定义函数时,需要确定函数名和参数个数
2. 如果有必要,可以先对参数的数据类型做检查
3. 函数体内部可以用return随时返回函数结果
4. 函数执行完毕也没有return语句时, 自动return None
5. 函数可以同时返回多个值,但其实就是一个tuple
'''
Python3 学习笔记12_函数_20180302
最新推荐文章于 2023-05-11 23:17:13 发布