内建函数-简介
1、Build-in Function,启动python解释器,输入dir(builtins), 可以看到很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函数, 这些函数因为在编程时使用较多,cpython解释器用c语言实现了这些函数,启动解释器 时默认加载。
2、这些函数数量众多,不宜记忆,开发时不是都用到的,待用到时再help(function), 查看如何使用,或结合百度查询即可,在这里介绍些常用的内建函数。
内建函数-常用
1、range
1、help(range):
range(stop) -> list of integers
range(start, stop[, step]) -> list of integers
2、参数分析:
1、start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5)。
2、stop:到stop结束,但不包括stop.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5。
3、step:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。
3、示例:
a = range(5)
list(a)
2、map
1、help(map):
map(...)
map(function, sequence[, sequence, ...]) -> list
2、参数分析:
1、function:是一个函数
2、sequence:是一个或多个序列,取决于function需要几个参数
3、返回值是一个list
3、语法:
参数序列中的每一个元素分别调用function函数,返回包含每次function函数返回值的list。
4、示例
#函数需要一个参数
map(lambda x: x*x, [1, 2, 3])
[1, 4, 9]
#函数需要两个参数
map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])
[5, 7, 9]
#函数为None,相当于合并参数为元祖
map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
#两个序列参数个数不一致时,个数少的补None
map(None, [1, 3, 5, 7, 9], [2, 4, 6])
[(1, 2), (3, 4), (5, 6), (7, None), (9, None)]
3、filter
1、help(filter):
filter(...)
filter(function or None, sequence) -> list, tuple, or string
Return those items of sequence for which function(item) is true. If
function is None, return the items that are true. If sequence is a tuple
or string, return the same type, else return a list.
2、参数分析:
1、function:接受一个参数,返回布尔值True或False
2、sequence:序列可以是str,tuple,list
3、语法
filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的回值的类型和参数sequence的类型相同
4、示例
filter(lambda x: x%2, [1, 2, 3, 4])
[1, 3]
filter(None, "she")
'she'
4、reduce
1、help(reduce):
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
of the sequence in the calculation, and serves as a default when the
sequence is empty.
2、参数分析:
1、function:该函数有两个参数
2、sequence:序列可以是str,tuple,list
3、initial:固定初始值
3、语法
reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。 第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial 作为参数调用function,否则会以序列sequence中的前两个元素做参数调用function。 注意function函数不能为None。
4、示例
reduce(lambda x, y: x+y, [1,2,3,4])
10
reduce(lambda x, y: x+y, [1,2,3,4], 5)
15
reduce(lambda x, y: x+y, ['aa', 'bb', 'cc'], 'dd')
'ddaabbcc'
5、sorted
1、help(sorted):
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
2、参数分析:
自定义cmp比较函数,返回三种情况:
x<y 返回-1
x>y 返回1
x==y 返回0
3、示例
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 < u2:
return -1
if u1 > u2:
return 1
return
6、内建函数(列表、字典、元组)
1、列表:
strList=['']:列表的创建。
str='字符串'
newStr='新的字符串'。
strList.append:进行列表数据信息的添加操作。
strList[0]=newStr:根据下标,进行列表指定元素数据信息的修改操作
str in strLsit:返回boolen类型,指定字符串信息是否在列表中存在。
for item in strList:进行列表数据的遍历操作,item为元素值
del strList[0]:根据列表下标,删除指定的列表元素。
strList.pop():删除列表最后一个元素的数据信息。
strList.remove('元素的值'):根据元素的值进行删除操作。
2、字典:
修改元素:根据Key值进行修改
添加元素:infor['age']=18
删除元素:del
清空字典中的数据信息:infor.clear
3、字典的常见操作
dic={1:'xiaohao',2:'xiaodong'}:创建一个字典对象。
dic.keys():获取字典所有对应的键,以列表的形式进行返回。
dic.valuses():获取字典所有对应的值,以列表的形式进行返回。
dic.items():获取字典中的键值数据,以列表的形式返回,每个元素都一个元组,分别存放着键和值。
dic.has_key(1):返回boolen类型,判断键值是否存在
4、元组:
tuple=(1,2,3,4,5):创建一个元组。
tuple[2]:根据下标读取到第三个元素。
tuple[-2]:根据下标读取到倒数第二个元素。
tuple[1:]:截取元组第二个元素到最后。
cmp(tuple1,tuple2):比较两个元组中的元素。
max(tuple):返回元组中元素的最大值。
min(tuple):返回元组中元素的最小值。
tuple(seq):将列表转换为元组。
5、运算符操作列表、字典、元组的技巧:
1、len((1,2,3,4)):获取到元组中元素的个数。
2、(1,2,3,4) +(1,2,3,4,5) ;进行两个元组的合并,获取到一个新的元组。
3、['Hi']*4:创建一个新的列表,并将列表中的数据进行复制四次。
4、1 in (1,2,3,4):判断元素是否存在;返回boolen类型。
7、内建函数(元组、列表、字典、集合)-通用
1、列表:
append() :列表后面追加一个元素
extend():列表后面追加一个列表
2、字典:
get(key,default):获取字典中默认的值,如果不存在获取指定的值
setdefault(key,default)
# key -- 查找的键值。
# default -- 键不存在时,设置的默认键值。
8、内建函数(hasattr、getattr、setattr)
hasattr(object, name)
# 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。
# 需要注意的是name要用括号括起来
>>> t=test()
>>> hasattr(t, "name") #判断对象有name属性
True
>>> hasattr(t, "run") #判断对象有run方法
getattr(object, name[,default])
# 获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。
# 需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法,
# 可以在后面添加一对括号。
>>> t=test()
>>> getattr(t, "name") #获取name属性,存在就打印出来。
'xiaohua'
>>> getattr(t, "run") #获取run方法,存在就打印出方法的内存地址。
<bound method test.run of <__main__.test instance at 0x0269C878>>
>>> getattr(t, "run")() #获取run方法,后面加括号可以将这个方法运行。
'HelloWord'
>>> getattr(t, "age") #获取一个不存在的属性。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: test instance has no attribute 'age'
>>> getattr(t, "age","18") #若属性不存在,返回一个默认值。
'18'
setattr(object, name, values)
# 给对象的属性赋值,若属性不存在,先创建再赋值。
>>> t=test()
>>> hasattr(t, "age") #判断属性是否存在
False
>>> setattr(t, "age", "18") #为属相赋值,并没有返回值
>>> hasattr(t, "age") #属性存在了
9、内建函数(异常捕获)
# 定义:某些错误操作导致程序无法正常运行
# 异常捕获:
try:
except(NameError,IOError),result:
print(result)#返回具体的错误信息
else:
print("我是else")
finally:
print("我是finally")
10、内建函数(文件流)
文件流对应的基础操作:
\r\n
\n
# linux中加b操作不太明显
windows中才会体现这个效果("abc\nabc")
open('./w','w'):abc之间换行了
open('./w','wb') :abc之间没有换行
f=open('文件名','访问模式');if f:返回boolen类型,判断文件是否打开。
# w:打开一个文件只用于写入;如果该文件已经存在则将其覆盖;如果该文件不存在,则创建一个新的文件。
# r:以只读的方式打开文件;文件的指针将会放在文件的开头;这个是默认模式。
# a:打开一个文件用于追加;如果该文件已存在,文件指针将会放在文件的结尾;也就是说,新的内容将会被写入到# 已有内容之后。如果该文件不存在,创建新文件进行写入。 rb:以二进制格式打开一个文件用于只读,文# 件指针将会放在文件的开头。这是默认模式。
# wb:以二进制格式打开一个文件用于写入,如果该文件已存在则将其进行覆盖。如果该文件不存在则创建新文件。
# ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容# 将会被写入到已有内容之后;如果该文件不存在,创建新文件进行写入操作。 r+:打开一个文件用于读# 写;文件指针将会放在文件的开头。
# w+:打开一个文件用于读写;如果噶文件已存在则将其覆盖。如果该文件不存在,创建新文件
# a+:打开一个文件用于读写;如果该文件存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文# 件不存在,创建新文件用于读写。 rb+:以二进制格式打开一个文件用于读写;文件指针将会放在文件的开# 头。
# wb+:以二进制格式打开一个文件用于读写;如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
# ab+:以二进制格式打开一个文件用于追加;如果该文件已存在,文件指针将会放在文件的结尾;如果文件不存在,# 创建新文件用于读写。 f.close():文件流操作结束后进行关闭。
f.wirte(写入的内容):打开文件后,将指定内容写入文件中。
f.read(读取数据的长度):使用read可以从文件中读取指定长度的数据,并将指针移到这条数据之后;默认读取全部数据。
f.readline():读取文件中一行数据的信息,指针移动的下一行。
f.readlines():读取整个文件的数据信息信息,返回一个列表,列表中每个元素为一行数据的信息。
f.tell():查看当前位置,就是指针对应的位置。
seek(offset,from):将指针定位到某个位置
# from:方向
# 0:表示文件的开头。
# 1:表示文件的当前位置。
# 2:表示文件的末尾。
# offset:偏移量
# 测试
# f.seek(5,0):文件开头,向后偏移5个位置
# f.seek(-3,2):文件结尾,向前偏移3个位置
11、内建函数(str)
str='这是一个字符串数据测试数据'对应
# str[0]:获取str字符串中下标为0的字符。
# str[3]:获取str字符串中下标为3的字符。
# str[0:3]:获取到字符串中从下标为0到下标为3的字符串。
str.find():返回指定str字符串中是否存在指定的字符串数据信息;如果存在则返回字符串首字母的下标,如不存在则返回-1。
str.index():返回指定str字符串中是否存在指定的字符串数据信息;如果存在则返回字符串首字母的下标,如不存在进行错误异常处理。
str.count():返回指定str字符串中被查找字符串存在的个数信息。
len(str):返回指定str字符串的字符总长度;如果字符串为空,则返回值为0。
str.replace('替换前字符','替换后字符',指定替换的次数):进行指定str字符串中指定字符数据的替换操作并将替换后的数据进行返回。
str.split(" ",切割次数):进行指定字符串的切割,返回被切割后的字符串列表数据信息;如果切割次数不填,认进行最大的切割次数。
str.capitalize():将指定str字符串的第一个字符进行大写。
str.startswith(匹配字符串数据):返回boolen类型,匹配指定str字符串是否以指定字符串数据开头。
str.endswith(匹配字符串数据):返回boolen类型,匹配指定str字符串是否以指定字符串数据结尾。
str.lower():将指定的字符串数据信息进行统一的小写转换并返回转换后的数据。
str.upper():将指定的字符串数据信息进行统一的大写转换并返回转换后的数据。
str.ljust(指定返回的字符串长度):返回一个字符串,将指定str进行左对齐,如果str字符串长度小于指定的度,则进行右侧的空格补充操作。
str.rjust(指定返回的字符串长度):返回一个字符串,将指定str进行右对齐,如果str字符串长度小于指定的度,则进行左侧的空格补充操作。
str.center(制定返回的字符串长度):返回一个字符串,将制定str进行中间对齐,如果str字符串长度小于指定长度,则进行两边的空格的补充操作。
str.lstrip():返回字符串,删除左侧的空格。
str.rstrip():返回字符串,删除末尾的空格。
str.rfind():类似find函数,从指定字符串的右侧开始进行查找,返回查找到的字符串第一个字符的下标。
str.rindex():类似index函数,从指定str字符串的左侧开始进行查找,返回查找到的字符串第一个字符串下标。
str.partition(指定分割的字符串):从指定str字符串中,查找制定分割的字符串,返回一个列表包含它的前面分,它自身和它的后面部分;如果字符串的匹配没有成功,则返回它自身和前后两个空字符。
str.rpartition(指定分割的字符串):类似partition函数,只是指定的分割字符串是从右开始查找的。
str.splitlines():进行行分割,返回一个列表,以每行数据作为一个元素进行保存。
str.isdigit():返回boolen类型,判断指定str字符串中的数据是否为字母或数字。
str.isalpha():返回boolen类型,判断指定str字符串中的数据是否为纯字母。
str.isalnum():返回boolen类型,判断指定str字符串中的数据是否为纯数字。
str.isspace():返回boolen类型,判断指定str字符串中的数据是否只包含空格。
str.isupper():返回boolen类型,判断指定str字符串中的数据是否为纯大写。
str.islower():返回boolen类型,判断指定str字符串中的数据是否为纯小写。
mystr.join(str):将类表mystr中的数据,根据指定的str字符串进行拼接操作;返回拼接后的字符串数据信息。
print("%0.1f",float(result*1.0)):进行浮点数的转换,并打印小数点后一位的数据
print("%d*%d=%d"%(j,i,i*j),end=' '):结束最后的换行
12、redirect
# 用于将客户端(如浏览器)重定向到另一个 URL,通常和Django等web框架联合使用
from django.shortcuts import redirect
from django.urls import reverse
from django.http import HttpResponse
def home(request):
return HttpResponse("Welcome to the Home Page!")
def login(request):
# 重定向到主页
return redirect('home')
def profile(request, username):
return HttpResponse(f"Hello, {username}!")
def redirect_to_profile(request, username):
# 重定向到用户主页
return redirect(reverse('profile', args=[username]))