Python-内建函数

内建函数-简介

  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]))

posted on 2025-02-08 17:42  cloud_wh  阅读(58)  评论(0)    收藏  举报

导航