Python3 学习笔记12_函数_20180302

#!/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
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值