我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python day six

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python day six

一、利用递归实现阶乘实例

#利用递归实现阶乘实例(实际就是函数调用函数)

#实现 1*2*3*4*5*6*7*8*9

def func(num):
    if num == 1:
        return 1
    return num * func(num - 1)

a = func(9)
print (a)
#输出:362880

二、反射

#反射:(利用字符串的形式去对象(或模块)中操作(寻找/检查/删除/设置)成员。)

'''
#例1:
#如一个web框架的路由系统
#定义一个commons.py的模块
def login():
    print("登录页面")

def logout():
    print("退出页面")

def home():
    print("主页面")
#定义一个index.py的为主运行程序
import commons

def run():
    in1 = input("请输入访问的url:")
    if in1 == 'login':
        commons.login()
    elif in1 == 'logout':
        commons.logout()
    elif in1 == 'home':
        commons.home()
    else:
        print("404")
'''

'''
#内置函数getattr()

1.getattr()  #获取它的属性(也称成员)
例如:
getattr(commons,"login")
#去commons模块中寻找它的成员login
#以例1的案例更改后如下:
#1.getattr()
 def run():
     in1 = input("请输入访问的url:")
     func = getattr(commons,in1)
     func()
'''


'''
2.hasattr()
    hasattr(commons,"login")
    #查找commons里边有没有login;有返回True,没有则返回False

##python 有两个web模块:Tornado和Django
#以例1的案例更改后如下:
#2.hasattr()
def run():
    in1 = input("请输入访问的url:")
    if hasattr(commons,in1):
        func = getattr(commons,in1)
        func()
    else:
        print("404")
'''

'''
3.delattr() #在模块中删除某个成员
4.setattr() #在模块中再设置某个成员
'''

'''
5.__import__()  #以字符串的形式导入模块
    例如1:
    import commons as obj   #此处commons是模块名
    obj.login()     #执行obj里边的login函数,也就是执行commons里边的login函数

    例如2:(和例1功能相等,导入写法不一)
    obj = __import__("commons") #此处commons是字符串
    obj.login()

#以例1的案例更改后如下:
#__import__()  #以字符串的形式导入模块
def run():
    in1 = input("请输入访问的url(commons/login):")
    m,f = in1.split("/")
    obj = __import__(m)
    if hasattr(obj,f):
        func = getattr(obj,f)
        func()
    else:
        print("404")
'''

'''
6.当导入别的文件夹模块的时候
    例如:
        目录为:
        day6
            lib
                account.py
            text.py
        导入方法:
            m,f = in1.split("/")
            obj = __import__('lib.'+m, fromlist=True)
            #fromlist=True 代表告诉是以字符串拼接的方式
            #如果不加,只导入lib.之前的模块lib

'''

'''
#实例:伪造web框架的路由系统
    (路由系统:访问某一个url 就给定义到某个函数上)

'''

'''
反射总结:
    1.反射:
        基于字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)其成员。
    2.反射功能(接口):
        是由python提供;
        4个功能:getattr()、delattr()、setattr()、hasattr()
    3.扩展:
        导入模块
            import 模块名
            from xxx import 模块名
        导入别的文件夹模块
            obj = __import__("xxx")
            #xxx是字符串
            obj = __import__("xxx."+xx,fromlist=True)
            #xxx是字符串、xx是一个变量也是一个字符串;
            #fromlist=True 告诉前边是以字符串拼接的方式

'''

三、模块中的特殊变量

1.__doc__     功能:将.py文件的注释自动封装到__doc__里边
             (注释:在.py文件开头用''' '''表示的内容)
                例如:
                     """
                        我是一个兵
                     """
                    print (__doc__)

2.__cached__  功能:显示字节码文件路径在哪里(也就是存放的位置)
                (在运行.py文件的时候会生成.pyc文件是字节码文件)

3.__file__    功能:查看当前.py文件的文件名
              1.print (__file__)

              2.查看绝对路径
                import os
                os.path.abcpath() 获取某个文件的绝对路径
                例:
                os.path.abspath(__file__)
                #查看当前文件的绝对路径

              3.查看当前目录的上级目录
                r1 = os.path.dirname(os.path.abcpath(__file__))
                print (r1)
              4.查看当前目录的上上级目录
                r2 = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
                print (r2)
                将目录加载到python系统目录里:
                import sys
                sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
                #这样目录永远加到了python系统目录里,以后当设计到bin目录都要加这行。

4.__package__ 功能:查看当前所在包的名称。
              1.当在当前目录下执行,放回None;
                print(__package__)
              2.当导入别的模块时,执行就返回模块所在的文件夹:
                import commons from login
                print (login,__package__)

5.__name__    功能:执行某.py文件时,那么__name__就等于__main__
                    只有执行当前文件时,当前文件的特殊变量__name__ == "__main__"
                    正式由于这种特性,因此在主运行文件里加上:
                    if __name__ == "__main__":

四、python模块sys

#sys(python解释器相关的内容都在里边)
1.sys.argv      执行脚本传参数,输出list;第一个元素就是脚本本身aa.py
                例如:
2.sys.exit(n)   退出程序,n是退出时屏幕打印的内容

3.sys.version() 获取python解释器的版本

4.sys.path      返回模块的搜索路径,初始时使用python的环境变量值

5.sys.platform  返回操作系统的平台

6.sys.stdin:    输入相关
7.sys.stdout:    输出相关
    sys.stdout.flush()    输出清空
    sys.stdout.write(r) 输出不加换行符
    print (r) 输出自动加换行符
8.sys.stderr:错误相关

9.\r            回到当前行的首位置
    例如:
        r = '%d%%' %(num)   #num是一个可遍历的变量
        输出:1%2%3%...100%
        加了\r之后:
        r = '\r%d%%' %(num)   #num是一个可遍历的变量
        输出:2%会把1%覆盖,3%会把2%覆盖,最后是100%
        
#进度条案例
import sys
import time
def jindutiao(num,total):
    r = num / total
    r1 = int(r*100)
    #result = '%d%%' %(r1)  #没有格式化输出
    result = '\r%s>%d%%' %("="*num,r1)  #有格式化输出
    sys.stdout.write(result)
    sys.stdout.flush()

if __name__ == '__main__':
    for i in range(1,101):
        time.sleep(0.1)     #延迟0.1s
        jindutiao(i,100)

五、python模块os

#OS(跟系统相关的东西都在里边)
os.getcwd()                     获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")             改变当前脚本工作目录;相当于shell下cd
os.curdir                       返回当前目录: ('.')
os.pardir                       获取当前目录的父目录字符串名:('..')
os.makedirs('dir1/dir2')    	可生成多层递归目录
os.removedirs('dirname1')       若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')         	生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')         	删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')       	列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()                     删除一个文件
os.rename("oldname","new")  	重命名文件/目录
os.stat('path/filename')        获取文件/目录信息
os.sep                          操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep                      当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep                      用于分割文件路径的字符串
os.name                         字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")   	运行shell命令,直接显示
os.environ                      获取系统环境变量
os.path.abspath(path)       	返回path规范化的绝对路径
os.path.split(path)         	将path分割成目录和文件名二元组返回
os.path.dirname(path)       	返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)      	返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)        	如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)        	如果path是绝对路径,返回True
os.path.isfile(path)       	如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)         	如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  	将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)      	返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)      	返回path所指向的文件或者目录的最后修改时间

六、python加密模块hashlib

#md5是不可逆的,通过密文比较方法确认

#例如:
import hashlib              #导入加密模块
obj = hashlib.md5()         #定义MD5加密
#obj.update('123')          #python2.7的写法
obj.update(bytes('123',encoding='utf-8'))   #python3.0的写法,必须用bytes
result = obj.hexdigest()    #obj.hexdigest就是获取加密后的字符串
print(result)               #打印加密后的字符串

#为了防止MD5 对称破解,可以用一下方法来解决:
import hashlib                            #导入加密模块
obj = hashlib.md5(bytes('djfjdsofhosdfjo13432534eee',encoding='utf-8'))         
                                          #定义MD5加密,首先加密这里的字符串
#obj.update('123')                        #python2.7的写法加密
obj.update(bytes('123',encoding='utf-8')) #python3.0的写法加密,必须用bytes
                                          #这里加密是在上边定义的时候加密基础之上再加密。
result = obj.hexdigest()                  #obj.hexdigest就是获取加密后的字符串
print(result)                             #打印加密后的字符串

七、python正则表达式

#正则表达式用的python的re模块
#它是一个小型编程语言,主要做字符串的一个匹配
#导入 import re
1.re.findall(x,y)
 #去字符串y里边,把所有匹配规则x的的结果,通过一个列表形式返回来。
    例如:
        import re
        a= re.findall('yang','dkfjdyangdif')
        print(a)
2.字符分为:1、普通字符
            2、元字符:  . ^ $ * + ? {} [] | () \    (11个)
                1 .     代表除换行符以外的任何一个字符
                2 ^     匹配字符串开始位置
                3 $     匹配字符串终止位置 
                4 *     匹配0-多次
                5 +     匹配1-多次
                6 ?     匹配0-1次
                7 {}   匹配固定几次,或者一个范围
                                {1-5}从1-5次
                                {,5}从0-5次
                                {1,}从1-多次
                8 []   匹配或的概念
                            1.匹配b或者c都会匹配到输出(只能匹配一个字符)
                                p1 = re.findall('a[bc]d','abd')
                                print(p1)
                            2.匹配范围(匹配a-z的范围,但这里只能匹配一个字符)
                                p1 = re.findall('a[a-z]d','add')
                                print(p1)
                            3.匹配字符集(匹配+号之前的a-z的n个字符都会被匹配)
                                p1 = re.findall('a[a-z]+d','addfddd')
                                print(p1)
                            4.中括号里边具有特殊意义的字符:
                                1 -     中横线代表范围:a-z 0-9
                                2 ^     代表非,否的意思
                                3 \d    代表数字
                9 \      功能: 1、\后加元字符,取消元字符的功能
                                2、\后加某些字符有一些特殊的意义
                         例:匹配单词字符
                                import re
                                #匹配首字母I,而不是字符串里边的I
                                p1 = re.findall(r'I\b','I am abcIdd')
                                #r :代表原生字符串,r后边都是普通字符串
                                #\b :匹配单词的开始或结束
                                print(p1)
                10 \w     匹配字母或数字或下划线或汉字

                11 \s     匹配任意的空白符

                12 \d     匹配数字

                13. \b    匹配单词的开始或结束

3.函数方法:
        1.match     匹配起始位置;match().group() group是match一个方法,取匹配值

        2.search    匹配到第一个就结束

        3.findall   返回一个列表

          finditer  返回一个对象,可以遍历、取值

        4.sub       匹配,替换

          subn      不但匹配、替换,还会把替换的次数打印出来

        5.split     分割

        6.re.compile(strPattern[,flag])
                    这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象
                    。第二个参数flag是匹配模式,取值可以使用按位或运算符‘|’表示同时生效,如:
                    re.I | re.M
                    可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译
                    成正则表达式对象,这样可以提高一定的效率,下面是一个正则表达式对象的一个例子
                        import re
                        text = "aaa is a handsome boy,he is cool,clever,and so on..."
                        regex = re.compile(r'\w*oo\w*')
                        print(regex.findall(text))

4.正则表达式分组
    (去已经匹配到的数据中,再匹配数据)
    r.group()       用"字符串"来匹配
    r.groups()      用()来匹配
    r.groupdict()   用?P<name> 来匹配,定义name为key,取的值为value

    例:
        # import re
        # text = "has hal dfdsjlfjdsl"
        # r = re.match("h(?P<name>\w+)",text)     #只匹配首
        # print(r.group())
        # print(r.groups())
        # print(r.groupdict())
        
        输出:
        has
        ('as',)
        {'name': 'as'}
        
        # import re
        # text = "has hal dfdsjlfjdsl hao"      #匹配多个
        # r = re.findall("h\w+",text)
        # print(r)
        
        输出:
        ['has', 'hal', 'hao']
        
        # import re
        # text = "has hal dfdsjlfjdsl hao"
        # r = re.findall("h(\w+)",text)
        # print(r)
        
        输出:
        ['as', 'al', 'ao']
        
        # import re
        # text = "hasbs hisbs dfdsjlfjdsl hdsas"
        # r = re.findall("h(\w+)",text)
        # r1 = re.findall("h(\w+)s(b)s",text)
        # print(r,r1)
        
        输出:
        ['asbs', 'isbs', 'dsas'] [('a', 'b'), ('i', 'b')]
        
        import re
        text = "asbs hisbs dfdsjlfjdsl hdsas"
        r1 = re.split("s(b)s",text,1)
        print(r1)
        
        #输出:
        ['a', 'b', ' hisbs dfdsjlfjdsl hdsas']

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python day six

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python day six

一、利用递归实现阶乘实例#利用递归实现阶乘实例(实际就是函数调用函数)#实现 1*2*3*4*5*6*7*8*9def func(num):    if num == 1:        return 1    return num * f
2023-01-31

Python day one

一、python介绍  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。    最新的TIOB
2023-01-31

python - one day

1. python历史。2008 年出现 python 2.7 与 python 3.0 两个版本,后来 吉多·范罗苏姆 大叔决定停用 python 2.7,但因用户反对,于是决定于 2020 年停止 python 2.7 的更新 宏观上:
2023-01-30

python day five

一、双层装饰器def w1(func):    def inner(*args,**kwargs):        # 验证1        # 验证2        # 验证3        return func(*args,**kwa
2023-01-31

python day 02

格式化输出%s:字符串占位符%d:数字占位符例如: "你好%s,我是%s,今年%d岁了。" % ("小明","小红",18)输出: 你好小明,我是小红,今年18岁了。基本运算符:算
2023-01-31

Python全栈day 02

一、循环语句while 用法num = 1while num <= 10: print(num) num += 1# 循环打印输出1-10while else 用法num = 1while num <= 10: print
2023-01-31

First Day Python介绍

前言:刚开通的博客,谢谢博客园平台,管理辛苦!Python介绍Python是一门高级的、面向对象的、解释性、脚本语言。高级语言:贴近开发者,对应底层语言,底层语言贴近机器;java、C#、php 。面向对象对应于面向过程,是开发人员在开发过
2023-01-31

Day-01 Python基础

一、Python介绍  Python是一门解释型,弱类型,高级开发编程语言;可广泛应用于众多领域,如:网页开发,数据分析,爬虫等众多领域。  目前Python主要应用领域:云计算、web开发、科学运算、人工智能、系统运维、金融。  Pyth
2023-01-30

Python 学习笔记 Day 01

CPU  相当于人的大脑内存  存储数据  4G  8G  16G  32G  --成本高 断电即消失硬盘  1T  固态硬盘  机械硬盘  应该长久保存的数据重要文件操作系统应用程序宏观上:python2与python3的区别  pyth
2023-01-31

每天下班写一个python小例子,Day day up

最近每天下班回家有时间就会写个小例子,一个月下来的成果,分享给大家学习共勉~第一个1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满
2023-06-02

python从入门到精通(DAY 1)

1、要点(1) 在C语言中没有字符串,只有字符,在python中的字符串hello,在C语言中是以字符数组在内存存放['h','e','l','l','o'],如果对字符串修改,则是在内存中新开辟了一段空间进行存放。字符串特性:一旦修改,需
2022-06-04

python从入门到精通(DAY 3)

要求:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david 12 kevin 123 lin 12
2022-06-04

day 90 DjangoRestFra

本节目录一 序列化组件二 xxx三 xxx四 xxx五 xxx六 xxx七 xxx八 xxx一 序列化组件  首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧:    Courses --- GET ---> 查看数据
2023-01-31

python从入门到精通(DAY 2)

1、字典复制:dict = {'name':'wang', 'sex':'m', 'age':34, 'job':'it'}info = dict ##别名 (二个字典指向内存的同一地址空间)info1 = dict.copy()
2022-06-04

Python基本循环实例Day 1

输入正确的用户名和密码,显示登陆界面,超过三次输入错误则锁定,定义字符串记得加上单引号,数字可以int定义,while循环和if循环语句后加上:,break不加:print("---------Welcome to Memory Card
2023-01-31

Python全栈Day 9部分知识点

python中一切皆对象。运算  2**4=16  即求2的4次方  39/8=4.875  39//8=4条件语句 if 条件:   pass    #空语句块,不可省略 else:   语句块  Linux系统中:  文件名:    .
2023-01-30

Python全栈Day 13部分知识点

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # 查看,返回上一层,退出操作。 4 dic = { 5 '植物': 6 { 7 '草本植
2023-01-30

Python廖雪峰实战web开发(Day

MVC:Model-View-Controller,中文名“模型-视图-控制器”。其中Python处理的URL函数就是C:Controller,Controller主要负责业务逻辑,比如检查用户名是否存在,取出用户信息等等;而View负责显
2023-01-31

Python全栈Day 14部分知识点

前面涉及数据类型和变量的总结  变量的作用是用来记录状态变化,变量名:“门牌号”,变量值:内存中开辟一个“小房间“”,存在里面。  数据类型:字符串、数字、列表、元组、字典。    可变:列表、字典    不可变(重新赋值,用ID号查看发现
2023-01-30

Python全栈Day 12部分知识点

可迭代对象:列表、字符串、元组  定义    列表是一种类,中括号把数据元素(六大数据类型都可以)括起来,用逗号作分割符。      有序,元素可被修改。  特性    深灰“魔法”    ——可索引(下标)取值;    ——可切片,切片结
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录