Python函数

调用函数

        Python内置了很多有用的函数,可以直接调用。

         查看函数的用法,有两种。

        1.

             http://docs.python.org/3/library/functions.html#abs    python官方网站查看函数的用法

        2.  利用help(function_name) 查看函数的帮助信息

help(abs)

Help on built-in function abs in module builtins:

abs(x, /)
    Return the absolute value of the argument.

        3.调用函数

         abs(100)

          abs(-20)

          abs(12.34)

   3.1 参数个数 

           调用函数的时候,如果传入的参数数目不对,会报TypeError的错误,并且python会明确的告诉你:abs()有且仅有一个参数,

但是却给了两个。

>>> abs(1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: abs() takes exactly one argument (2 given)

     3.2  参数类型

        如果传入的参数数目是对的,但是参数类型不能被函数所接受,也会报TypeError的错误,并且给出错误信息。

str是错误的参数类型。

    >>>   abs('a')

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'

  但是有的函数可以接收 任意多个参数,比如说max(),min()

>>>max(1,2)

2

>>>min(1,2)

1

4.数据类型转换

    Python内置的常用函数还包括数据类型转换函数,比如说int()函数可以把其他类型数据转换成整数

>>> int('123')
123

>>> int(12.34)

12

>>> int(True)

1

>>>float('12')

12.0

    str(),bool()等函数的使用同理

5.加深对函数的理解:函数的别名

  函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给函数名赋一个新的变量

>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
   1

   

定义函数

1.函数定义格式

       在Python中,定义一个函数要使用def语句,一次写出函数名、括号、括号里面的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return语句返回,函数在执行到return时,函数就执行完毕,并将结果返回,因此函数内部可以通过 循环和判断来实现复杂的逻辑。

    自定义一个求绝对值的my_abs函数为例:

    

def my_abs(x):
    if x<=0:
        return -x
    else:
        return   x

my_abs(-10)
10

2. 空函数

    如果定义一个什么事也不做的空函数,可以用pass语句

def nof():
    pass

    空函数的作用:pass语句什么都不做,pass可以作为占位符,当我们没有想好这个函数怎么写的时候,可以先写一个空函数,让代码先跑起来。

    pass还可以用在其他语句里面,比如说;

            age = 20

age = 20
if age >=18:
   pass

#如果说没有这个pass的话
age = 20
if age >=18:
  
 File "<ipython-input-20-ad0f9e33db7b>", line 3
    
    ^
SyntaxError: unexpected EOF while parsing

3. 参数检查

      在Python的解释器中所进行的参数检查,只会帮我们检查参数的个数,并且抛出TypeError错误,如果参数类型不对,解释器就无法帮我们检查。

#参数个数发生变化
my_abs(1,2)


TypeError                                 Traceback (most recent call last)
<ipython-input-3-a805b5a6712a> in <module>()
----> 1 my_abs(1,2)

TypeError: my_abs() takes 1 positional argument but 2 were given

#自己写的函数传递错误的参数
my_abs('s')
TypeError                                 Traceback (most recent call last)
<ipython-input-4-1689cecc0537> in <module>()


#内置的abs()函数
----> 1 my_abs('s')
abs('s')
<ipython-input-2-8d837d6ae717> in my_abs(x)
      1 def my_abs(x):
----> 2     if x<=0:
      3         return -x
      4     else:
      5         return   x

TypeError: '<=' not supported between instances of 'str' and 'int'


所以可以看出,当传入不恰当的参数时,内置函数abs会检查出 参数错误,而我们定义的my_abs没有参数检查,会导致if语句出错。出错信息和abs不一样。所以这个函数需要完善。

 

def my_abs(x):
    if not isinstance(x,(float,int)):
        raise TypeError('类型出错')
    if x>=0:
        return x
    else:
         return -x
    


my_abs('s')

TypeError                                 Traceback (most recent call last)
<ipython-input-7-1689cecc0537> in <module>()
----> 1 my_abs('s')

<ipython-input-6-daf29ad7771b> in my_abs(x)
      1 def my_abs(x):
      2     if not isinstance(x,(float,int)):
----> 3         raise TypeError('类型出错')
      4     if x>=0:
      5         return x

TypeError: 类型出错

4.返回多个值

      像C语言一样,Python的函数也是支持返回多个值的

import math

def move(x,y,step,angle):
    nx=x+step*math.cos(angle)
    ny=y+step*math.sin(angle)
    return nx,ny

x,y=move(1,1,1,0)     #同时获得返回值
x,y
(2.0, 1.0)


r=move(1,1,1,0)
r
(2.0, 1.0)
#其实不然 Python返回值仍然是个单一值 不过是个tuple,在语法上返回一个tuple可以省略括号,而多个变量可以同时接受一个tuple,按位置赋给对应的值,所以说 Python的函数值其实就是返回一个tuple,但写起来更加方便。

        其实不然,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值