• 中文
    • English
  • 注册
  • 查看作者
    • 第九章:调用函数、定义函数

      一.  调用函数

      1. abs():求绝对值

      2. max():求最大值

      3. min():求最小值

      4. int():将其他数据类型转换为整型

      5. float():将其他数据类型转换为浮点型

      6. bool():将其他数据类型转换为布尔型

      7. str():将其他数据类型转换为字符型

      8. isinstance():数据类型检查

      9. 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”

      a = -1
      print(abs(a)) #1
      
      a = (1,2,3)
      print(max(a))   #3
      
      print(min(1,2,3))   #1
      
      
      print(int("123")) #123
      print(int(12.3)) #12
      print(int(12.8)) #12
      print(float("12.3")) #12.3
      print(float(12)) #12.0
      print(str(123)) #123
      print(bool(1)) #True
      print(bool(0)) #False
      print(bool("adfda")) #True
      print(bool("false")) #True
      
      jia = abs # 注意没有()
      print(jia(-2)) #2
      
      print(isinstance(1,(int,float))) #True
      print(isinstance("1",(int,float))) #False

      二.  定义函数

      1. 除了调用Python内置的函数外,我们还可以编写自己定义的函数,比如手动实现一个abs函数:

      def jia_abs(x):
          if x >= 0:
              return x
          else:
              return -x
      
      print(jia_abs(-3)) # 3

      2. 如果某个函数还没想好要怎么实现,可以用pass函数将其设置为空函数

      def jia_abs(x):
          pass

      3. 调用函数时,如果参数个数不对,Python解释器会报TypeError错误,但如果是参数类型不对,Python无法帮我们检查

      def jia_abs(x):
          if x >= 0:
              return x
          else:
              return -x
      
      
      print(jia_abs(-3,2)) #TypeError: jia_abs() takes 1 positional argument but 2 were given
      print(jia_abs("-3")) # TypeError: '>=' not supported between instances of 'str' and 'int',和内置的abs报错不一样

      我们可以升级一下jia_abs这个函数,在函数内主动判断参数类型,并将其限制为只允许接受int和float类型的函数

      def jia_abs(x):
          if not isinstance(x,(int,float)):
              raise TypeError("类型错误")
          if x >= 0:
              return x
          else:
              return -x
      
      print(jia_abs("-3")) # TypeError: 类型错误

      4. 返回多个值

      我们可以在函数中,主动返回多个值

      def jia(x):
          return x,-x
      
      a,b=jia(1)
      print(a,b) #1,-1
      
      a = jia(1)
      print(a) #(1, -1),实际上jia返回的是一个tuple:(1,-1)

      三.  练习题

      请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 ax^2+bx+c=0的两个解

      import math
      def quadratic(a,b,c):
          return (-b+math.sqrt(pow(b,2)-4*a*c))/(2*a),(-b-math.sqrt(pow(b,2)-4*a*c))/(2*a)
      
      if quadratic(2, 3, 1) != (-0.5, -1.0):
          print('测试失败')
      elif quadratic(1, 3, -4) != (1.0, -4.0):
          print('测试失败')
      else:
          print('测试成功')

      参考资料

      [1] 廖雪峰-Python教程

    • 0
    • 2
    • 0
    • 1.1k
    • 请登录之后再进行评论

      登录
    • 0
      张甲49站长
      @☞R.L.Y☜ 你好
    • 0
      你好
    • 赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: