2021-03-11 Python学习笔记

函数

圆的面积计算公式是S=\pi r^{2}

当我们知道半径r的值时,就可以根据公式计算出面积。

假设我们需要计算出三个不同大小的圆的面积:r1=12.34  r2=9.08  r3=73.1

当代吗出现很有规律的重复时,每次写3.14*r*r就会很麻烦,这时我们可以写成函数调用

s=area_of_circle(x)       函数写一次就可以多次调用,python的内置函数也可以直接调用

抽象

抽象是数学中常见的概念,例如∑可以理解成求和

1+2+3+...+100可以写成 \sum_{n=1}^{100}n

\sum_{n=1}^{100}(n^{2}+1)可以还原为(1x1+1)+(2x2+1)+...+(100x100+1)

借助抽象,我们才能不关心底层的具体计算过程,而是直接在高层次上思考问题

函数就是最基本的一种代码抽象的方式

调用函数

调用函数时需要知道函数的名称和参数

比如求绝对值的函数abs,只有一个参数,输入多于一个参数时便会报错

需要知道函数的名称和参数时可以直接从Python的官方查看文档,也可以在交互式命令行通过help(abs)查看abs函数的帮助信息

max()函数可以接受任意多的参数,返回最大的

数据类型转换

int()函数可以将其它数据类型转换为整数

int()、float()、str()、bool()之间可以互相转化

拓展:bool()函数

  • 数字:0返回假(False),任何其他数值都返回真(True)。
  • 字符串:没有值的字符串(也就是None或者空字符串)返回False,否则返回True。
  • 列表、字典、元祖:空的返回False,否则返回True。
  • 用bool函数来判断一个值是否已经被设置。

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

a=abs
print(a(-28))

定义函数

定义函数使用def语句,依次写函数名、括号、括号中的参数和冒号,然后在缩进块中编写函数体,返回值用return语句

def my_abs(x):
    if x>=0:
        return x
    else:
        return -x
b=input()
print(my_abs(int(b)))

注意:函数体内部的语句在执行时,一旦执行到return,函数执行完毕,并将结果返回。单独return即为返回空

空函数

如果想定义一个什么都不做的空函数,用pass语句

pass的作用?pass可以用来作为占位符,没有想好函数代码时,可以先放一个pass让代码运行起来,pass也可用在其他语句里

def nop():
    pass

参数检查

调用函数时,如果参数个数不对,python就会检查出来,并抛出TypeError

但如果参数类型不对,就无法检查

my_abs和内置函数abs的差别:

当传入不恰当的参数时,内置函数会检查出参数错误,而自定义的没有参数检查,会导致if语句出错,出错信息和abs不一样,my_abs定义不完善

修改一下my_abs的定义,对参数类型做检查,只允许整数和浮点数类型的参数。

数据类型检查可以用内置函数isinstance()实现:

def my_abs(x):
    if not isinstance(x,(int,float)):
        raise TypeError('bad operand type')
    if x>=0:
        return x
    else:
        return -x

返回多个值

例如在游戏中,经常需要从一个点移动到另一个点,给出坐标位移角度,就可以计算出新的坐标

看似返回了多个值,实际返回的是一个tuple,Python函数返回的仍然是单一值,返回一个tuple可以省略括号

import math 语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数

import math
def quadratic(a,b,c):
    x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a)
    x2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a)
    return x1,x2
x1,x2=quadratic(2,3,1)
print(x1,x2)

函数的参数

定义函数时,确定参数的名字和位置后,函数的接口定义就完成了

位置参数

def power(x):
    return x*x

对于pover(x)函数,参数x就是一个位置参数

当我们调用pover函数时,必须传入有且仅有的有一个参数x

若需要计算x^3...x^n怎么办?可以定义一个pover(x,n)函数用来计算x^n

def pover(x,n):
    s=1
    while n>0 :
        n=n-1
        s=s*x
    return s
print(pover(5,3))

(x,n)两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋值给x和n

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值