xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能家电

当前位置:美高梅游戏网站 > 智能家电 > Python全栈开辟之4、内置函数、文件操作和递归

Python全栈开辟之4、内置函数、文件操作和递归

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-03 04:40

4、内置函数、文件操作和递归,函数递归

  转发请评释出处 

一、内置函数

Python的嵌入函数有大多,上面的那张图全体罗列出来了,然后我会把某些常用的拿出来讲解,能够随着本人敲一下代码加深驾驭。

图片 1

# 匿名函数
f=lambda a,b:a+b
print(f(2,3))                                          # 5

# abs() 取绝对值
print(abs(-111))                                        # 111

# all() 循环可迭代对象的每个元素,都为真则返回True,否则返回假
# 0,None ,"",[],(),{} 是假的
print(all([11,22]))                                    # True

# any 有一个为真,全部都为真
print(any([0,0,None]))                                   #False

# ascii 在对象类中找 __repr__,获取返回值
class D():
    def __repr__(self):
        return 'hello'
d=D()
print(ascii(d))                                        #hello

# bin 将十进制转换成2进制
# oct() hex()
print(bin(11))                                          #0b1011

#各种进制转换成十进制可以用int()
print(int('11',base=2))                                    #将二进制'11'转换成十进制数 3

# bytearry   字节列表

# chr() 找到数字对于的ascii码
# ord() ascii码对应的数字
# chr ord 只适用于ascii码
print(chr(65))                                       # A
print(ord('A'))                                      # 65

# callable 后面加个括号是看否能执行
#complie() 接受一个字符串,将其转换成函数代码

# divmod 返回除法的(值,余数)
print(divmod(10,3))                                   #(3,1)

# eval 计算器的功能 返回结果
print(eval('a+60',{'a':90}))                               # 150
print(eval('3+4*6/7+((1+2)-5)'))                           # 4.428571428571429

#exec,执行python代码,没有返回值
exec("for i in range(5):print(i)")                         # 直接循环输出0,1,2,3,4

# filter(函数,可迭代的对象)
# 循环可以迭代的对象,传入函数中执行,如果不符合就过滤
def fun(s):                                            #定义判断一个数是否是偶数的函数
    if s%2==0:
        return True
    else:
        return False
ret=filter(fun,[1,2,3,4,5,6,7,8])
for i in ret:
    print(i)                                          # 打印出2,4,6,8

#用匿名函数改写一下
ret1=filter(lambda x:x%2==0,[1,2,3,4,5,6,7,8])
for i in ret1:
    print(i)                                                    # 2,4,6,8

#map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
ret=map(lambda x:x+100,[1,2,3])
for i in ret:
    print(i)                                                  # 101,102,103

# globals() 获取当前文件的所有全局变量
# locals()  获取当前文件的所有局部变量
# hash()    获取哈希值
# isinstance 看某个对象是不是某个类创建的

#iter() 创建一个可以被迭代的对象 next()取下一个值
k=iter([1,2,3,4])
print(next(k))                                           # 1

# pow() 求指数
print(pow(2,10))                                     #1024

# round() 四舍五入
# #zip
l1=[1,2,3,4]
l2=['a','b','c','d']
k=zip(l1,l2)
for i in k:  
    print(i)                                            #打印出(1,a),(2,b)....

一、内置函数

Python的放到函数有非常的多,上面包车型大巴那张图全体罗列出来了,然后小编会把一部分常用的拿出去批注,能够随着作者敲一下代码加深通晓。

图片 2

# 匿名函数
f=lambda a,b:a+b
print(f(2,3))                                          # 5

# abs() 取绝对值
print(abs(-111))                                        # 111

# all() 循环可迭代对象的每个元素,都为真则返回True,否则返回假
# 0,None ,"",[],(),{} 是假的
print(all([11,22]))                                    # True

# any 有一个为真,全部都为真
print(any([0,0,None]))                                   #False

# ascii 在对象类中找 __repr__,获取返回值
class D():
    def __repr__(self):
        return 'hello'
d=D()
print(ascii(d))                                        #hello

# bin 将十进制转换成2进制
# oct() hex()
print(bin(11))                                          #0b1011

#各种进制转换成十进制可以用int()
print(int('11',base=2))                                    #将二进制'11'转换成十进制数 3

# bytearry   字节列表

# chr() 找到数字对于的ascii码
# ord() ascii码对应的数字
# chr ord 只适用于ascii码
print(chr(65))                                       # A
print(ord('A'))                                      # 65

# callable 后面加个括号是看否能执行
#complie() 接受一个字符串,将其转换成函数代码

# divmod 返回除法的(值,余数)
print(divmod(10,3))                                   #(3,1)

# eval 计算器的功能 返回结果
print(eval('a+60',{'a':90}))                               # 150
print(eval('3+4*6/7+((1+2)-5)'))                           # 4.428571428571429

#exec,执行python代码,没有返回值
exec("for i in range(5):print(i)")                         # 直接循环输出0,1,2,3,4

# filter(函数,可迭代的对象)
# 循环可以迭代的对象,传入函数中执行,如果不符合就过滤
def fun(s):                                            #定义判断一个数是否是偶数的函数
    if s%2==0:
        return True
    else:
        return False
ret=filter(fun,[1,2,3,4,5,6,7,8])
for i in ret:
    print(i)                                          # 打印出2,4,6,8

#用匿名函数改写一下
ret1=filter(lambda x:x%2==0,[1,2,3,4,5,6,7,8])
for i in ret1:
    print(i)                                                    # 2,4,6,8

#map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
ret=map(lambda x:x+100,[1,2,3])
for i in ret:
    print(i)                                                  # 101,102,103

# globals() 获取当前文件的所有全局变量
# locals()  获取当前文件的所有局部变量
# hash()    获取哈希值
# isinstance 看某个对象是不是某个类创建的

#iter() 创建一个可以被迭代的对象 next()取下一个值
k=iter([1,2,3,4])
print(next(k))                                           # 1

# pow() 求指数
print(pow(2,10))                                     #1024

# round() 四舍五入
# #zip
l1=[1,2,3,4]
l2=['a','b','c','d']
k=zip(l1,l2)
for i in k:  
    print(i)                                            #打印出(1,a),(2,b)....

二、文件操作

  文件操作分为3个进程,文件张开,操作文件,关闭文件,可是每一遍都要关闭文件很麻烦,何况有望在事实上海工业作操作的时候忘了关门文件,所以大家用另一种操作,用with语句来操作,那样就无需手动来关闭文件。在背后的操作中,笔者都会以with格局来张开文件。

#windows下默认为gbk,要指定编码为'utf-8'
#'r'为只读,'1.txt'为文件路径
f=open('1.txt','r',encoding='utf-8')  #打开文件
data=f.read()               #操作文件
f.close()                 #关闭文件
print(data)

# 用with语句打开,不需要自动关闭
with open('1.txt','r',encoding='utf-8') as f:
    print(f.read())

文件展开药格局有上边那几个:

  • r ,只读情势【暗许】
  • w,只写形式【不可读:空中楼阁则开创;存在则清空内容;】
  • x, 只写方式【不可读:不真实则开创,存在则报错】
  • a, 追加格局【不可读;不真实则开创;存在则只扩充内容;】

  "+" 表示能够何况读写某些文件,譬喻r+,w+,x+ 和 a+ 。"b"表示以字节的章程操作rb或r+b,wb 或 w+b,xb 或 x+b、ab 或 a+b,以b格局展开时,读取到的内容是字节类型,写入时也亟需提供字节类型,那么些都亟待程序猿自个儿来做转变,上面从代码来操作壹回。

with open('1.txt','r',encoding='utf-8') as f:
    print(f.read())                       # 1.txt,不存在,报错

# # w只写(不可读,不存在创建,存在则清空)
with open('1.txt','w') as f:
    f.write('888')                       #创建1.txt 写入新内容888


#x 只写(不可读,不存在创建,存在报错)
with open('1.txt','x') as f:
    f.write('666')                        #这里存在,报错

# a 追加模式(不可读,不存在创建,存在往末尾追加)
with open('1.txt','a') as f:
    f.write('777')                        #往1.txt里面追加 777

#以字节方式打开
#将1.txt里面的文件内容清空,往里面写入‘字符串’
#需要自己手动转换
with open('1.txt','wb') as f:
    str_data='字符串'
    byte_data=bytes(str_data,encoding='utf-8')
    f.write(byte_data)
#以rb读
with open('1.txt','rb') as f:
    data=f.read()
    print(type(data))                #打印出读取的类型 字节
    str_data=str(data,encoding='utf-8')     #字节转换成字符串
    print(str_data)                          #打印出'字符串'

下边珍视解说下用"+" 同偶然间读写某些文件的操作

# r+形式 写的时候在末尾追加,指针移到到最后
# 大家一定要清楚的明白读写的时候指针指向的位置,下面的这个例子一定要懂
# f.tell()   读取指针的位置
# f.seek(0)  设置指针的位置
with open('1.txt','r+',encoding='utf-8') as f:
    print(f.tell())            #打印下 文件开始时候指针指向哪里 这里指向 0
    print(f.read())            #读出文件内容'字符串',
    print(f.tell())            #文件指针指到 9,一个汉子三个字符串,指针是以字符为单位
    f.write('科比')            #写入内容'科比',需要特别注意此时文件指到文件末尾去了
    print(f.read())            #指针到末尾去了,所以读取的内容为空
    print(f.tell())            #指针指到15
    f.seek(0)                  #将指针内容指到 0 位置
    print(f.read())            #因为文件指针指到开头去了,所以可以读到内容 字符串科比

# w+形式 存在的话先清空 一写的时候指针到最后
with open('1.txt','w+') as f:
    f.write('Kg')               #1.txt存在,所以将内面的内容清空,然后再写入 'kg'
    print(f.tell())             #此时指针指向2
    print(f.read())             #读不到内容,因为指针指向末尾了
    f.seek(0)
    print(f.read())             #读到内容,因为指针上一步已经恢复到起始位置

# a+打开的时候指针已经移到最后,这里就不再演示了,读者可以自己试一下
# x+文件存在的话则报错,也不演示了

  尽管未来有那样一个须要,有三个10G大的文书,怎么样拷贝到另一个文件中去?下边将讲一下怎么样同一时候开拓七个公文举行管理,以及文件太大的时候怎么读取用with语句就能够何况开荒七个文本,叁个读,三个写。倘诺1.txt文本有10G大,要是用read则叁遍性就将内容读到内部存款和储蓄器中去了,那明摆着不合适,借使用readline()的话就算也得以读一行,可是并不知道曾几何时截止,不过能够用for循环读取文件这一个可迭代的指标,一行行的读取。上边三行代码就足以实现了

with open('1.txt','r',encoding='utf-8') as fread,open('2.txt','w') as fwrite:
    for line in fread:          #一行行的读
        fwrite.write(line)        #一行行的写

二、文件操作

  文件操作分为3个经过,文件展开,操作文件,关闭文件,可是每一趟都要关门文件很劳顿,并且有极大希望在实际上中国人民解放军海军事工业程大学业作操作的时候忘了破产文件,所以我们用另一种操作,用with语句来操作,那样就没有供给手动来关闭文件。在后头的操作中,笔者都会以with情势来开拓文件。

#windows下默认为gbk,要指定编码为'utf-8'
#'r'为只读,'1.txt'为文件路径
f=open('1.txt','r',encoding='utf-8')  #打开文件
data=f.read()               #操作文件
f.close()                 #关闭文件
print(data)

# 用with语句打开,不需要自动关闭
with open('1.txt','r',encoding='utf-8') as f:
    print(f.read())

文本打开药方式有上边那么些:

  • r ,只读格局【私下认可】
  • w,只写形式【不可读:不设有则开创;存在则清空内容;】
  • x, 只写格局【不可读:不设有则开创,存在则报错】
  • a, 追加格局【不可读;不设有则创立;存在则只扩充内容;】

  "+" 表示能够同一时间读写某些文件,比方r+,w+,x+ 和 a+ 。"b"表示以字节的不二等秘书技操作rb或r+b,wb 或 w+b,xb 或 x+b、ab 或 a+b,以b格局展开时,读取到的内容是字节类型,写入时也亟需提供字节类型,这几个都亟需技术员本人来做转变,下边从代码来操作三次。

with open('1.txt','r',encoding='utf-8') as f:
    print(f.read())                       # 1.txt,不存在,报错

# # w只写(不可读,不存在创建,存在则清空)
with open('1.txt','w') as f:
    f.write('888')                       #创建1.txt 写入新内容888


#x 只写(不可读,不存在创建,存在报错)
with open('1.txt','x') as f:
    f.write('666')                        #这里存在,报错

# a 追加模式(不可读,不存在创建,存在往末尾追加)
with open('1.txt','a') as f:
    f.write('777')                        #往1.txt里面追加 777

#以字节方式打开
#将1.txt里面的文件内容清空,往里面写入‘字符串’
#需要自己手动转换
with open('1.txt','wb') as f:
    str_data='字符串'
    byte_data=bytes(str_data,encoding='utf-8')
    f.write(byte_data)
#以rb读
with open('1.txt','rb') as f:
    data=f.read()
    print(type(data))                #打印出读取的类型 字节
    str_data=str(data,encoding='utf-8')     #字节转换成字符串
    print(str_data)                          #打印出'字符串'

上边器重解说下用"+" 同期读写有些文件的操作

# r+形式 写的时候在末尾追加,指针移到到最后
# 大家一定要清楚的明白读写的时候指针指向的位置,下面的这个例子一定要懂
# f.tell()   读取指针的位置
# f.seek(0)  设置指针的位置
with open('1.txt','r+',encoding='utf-8') as f:
    print(f.tell())            #打印下 文件开始时候指针指向哪里 这里指向 0
    print(f.read())            #读出文件内容'字符串',
    print(f.tell())            #文件指针指到 9,一个汉子三个字符串,指针是以字符为单位
    f.write('科比')            #写入内容'科比',需要特别注意此时文件指到文件末尾去了
    print(f.read())            #指针到末尾去了,所以读取的内容为空
    print(f.tell())            #指针指到15
    f.seek(0)                  #将指针内容指到 0 位置
    print(f.read())            #因为文件指针指到开头去了,所以可以读到内容 字符串科比

# w+形式 存在的话先清空 一写的时候指针到最后
with open('1.txt','w+') as f:
    f.write('Kg')               #1.txt存在,所以将内面的内容清空,然后再写入 'kg'
    print(f.tell())             #此时指针指向2
    print(f.read())             #读不到内容,因为指针指向末尾了
    f.seek(0)
    print(f.read())             #读到内容,因为指针上一步已经恢复到起始位置

# a+打开的时候指针已经移到最后,写的时候不管怎样都往文件末尾追加,这里就不再演示了,读者可以自己试一下
# x+文件存在的话则报错,也不演示了

  假诺未来有这般两个要求,有三个10G大的文本,怎样拷贝到另一个文件中去?上边将讲一下什么样同有时候张开三个公文实行拍卖,以及文件太大的时候怎么读取用with语句就足以同时开荒八个文本,叁个读,多少个写。要是1.txt文本有10G大,假设用read则壹回性就将内容读到内存中去了,那明显不合适,借使用readline()的话即便也足以读一行,但是并不知道什么时候甘休,但是足以用for循环读取文件这么些可迭代的对象,一行行的读取。上边三行代码就能够兑现了

with open('1.txt','r',encoding='utf-8') as fread,open('2.txt','w') as fwrite:
    for line in fread:          #一行行的读
        fwrite.write(line)        #一行行的写

本文由美高梅游戏网站发布于智能家电,转载请注明出处:Python全栈开辟之4、内置函数、文件操作和递归

关键词: