web前端学习python之第一章_基础语法(二)
前言:最近新做了一个管理系统,前端已经基本完成,
但是后端人手不足没人给我写接口,自力更生丰衣足食,
所以决定自学python自己给自己写接口哈哈哈哈~
上一章内容:web前端学习python之第一章_基础语法(一)
函数的定义和使用
内置函数
python有很多内置的有用的函数,可以直接调用,参考网址:https://docs.python.org/3/library/functions.html#abs
数据类型转换
其他数据类型转为整数int()
>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
函数名
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
定义函数
在python中,定义一个函数需要使用def语句
def my_abs(x):
if x >= 0:
return x
else:
return -x //内容不细讲,js函数是function,这里的关键字改成了def,不知道python有没有类似于箭头函数那种的写法
return意义与js一致,代码执行到return是,函数就执行完毕,并将结果返回,如果没有return函数执行完毕后也会返回结果,只是结果为none,return none可简写为return
引入函数
如果你已经把my_abs()
的函数定义保存为abstest.py
文件了,
那么,可以在该文件的当前目录下启动Python解释器,
用from abstest import my_abs
来导入my_abs()
函数,注意abstest
是文件名(不含.py
扩展名):
│>>> from abstest import my_abs
│>>> my_abs(-9)
│9
│
空函数
如果想定义一个什么事也不做的空函数,可以用pass
语句:
def nop():
pass
定义一个空函数有什么意义呢?
pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来
pass也可以用在其他语句中
if age >= 18:
pass
传参的数据类型检查
有时候我们会传一些不恰当的参数导致代码报错,我们可以进行数据类型检查,数据类型检查用内置函数isinstance()实现
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
默认参数(默认参数必须指向不变对象!)
我们传递参数的时候如果参数传的不全就会报错,我们可以给一些参数设置默认参数
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
小坑坑
def add_end(L=[]):
L.append('END')
return L //调用第二次和第三次时
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END'] //Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],
//每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。
//可以使用none这个不变对象来实现
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
可变参数
由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum //*是重点
如果已有一个list或者tuple,要调用一个可变参数怎么办
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
这样有点类似与apply,是把参数一个个传的或者类似于[...nums]
关键字函数(**可传可不传,可传任意个)
调用函数时可以只传入必须参数和任意个数的关键字参数
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}