def

python异常处理

十年热恋 提交于 2021-01-10 14:59:27
#异常:你在运行代码过程中遇到的任何错误 带有error字样的 都是异常 #异常处理:我们对代码中所有可能会出现的异常 进行的处理 #疑问:我们为什么要去进行处理? 首先罗列一些异常 # os.rmdir("Alisa")# OSError # print(a)# NameError : name 'a' is not defined # def add(a,b):# TypeError : add() missing 1 required positional argument: 'b' # print(a+b) # add(3) # file=open("火妹.txt")# io.UnsupportedOperation : not writable # file.write("我就是一个非常优秀的少先队员!") #初级 #1:处理某个错误 #2:处理某种类型的错误 #3:有错就抓 try:#警察 os.mkdir("Alisa") #FileExistsError #嫌疑人 except:#except 警力出动 print("抓捕归案,等待进一步处理") #既要抓 还要有处罚措施 try: os.rmdir("Alisa")#OSError except Exception as e:#把错误抓起来 存到变量e里面去 error print("抓捕归案,等待进一步处理")

局部变量与全局变量

淺唱寂寞╮ 提交于 2021-01-10 11:57:26
全局变量 :顶头写,没有空格,任何时候都能调用 name= ' lhf ' 局部变量 :子程序中的变量,比如一个函数里x=1,如果同时有全局变量x=1跟局部变量x=1,那么就执行局部变量,如果没有局部变量就执行全局变量(家里没有再去外面找,一层一层的找,知道找到最外边一层) name= ' “lfe” def change_name(): global name name = ' 帅了一比 ' print ( ' change_name ' ,name) 但是局部变量只在函数里面生效 name = " adf " def change_name(): global name # 如果这在加入global name(就是全局变量,就是name=“adf”) name = ' 帅了一比 ' print ( ' change_name ' ,name) print (name) '帅了一比' # 因为name='帅了一比'是在global后面赋值的,所以把全局变量改了 错误事例:name局部变量之后再拿全局变量,会导致找不到该使用的name值,因为优先使用局部变量就该用name = "自己",但是根据自上而下的规则又要使用global NAME,这样就会产生矛盾从而报错。 解决措施:因此全局变量尽量大写,局部变量尽量都小写,比较好区分。 NAME = [ " 产品经理 " , " 廖波湿

2021-01-07:cdn加速是什么原理?

送分小仙女□ 提交于 2021-01-10 10:02:50
福哥答案2021-01-07: [答案来自此链接:](https://www.zhihu.com/question/438234873) CDN(Content Delivery Network):内容分发网络是指一组在地理上分散的服务器,它们协同工作以提供互联网内容的快速交付,一般各种网页静态资源,例如HTML页面、javascript 文件、样式表、图像和视频,可以通过 CDN 进行转发,分布于世界各地的不同服务器上。 这样,用户访问某个资源时,可以选择就近的服务器进行访问,减少网络延迟。 CDN加速原理: 当用户访问使用CDN服务的网站时,本地DNS服务器通过CNAME方式将最终域名请求重定向到CDN服务。CDN通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容。 一般的,CDN 都会承载如下的功能: 1.缩短网站加载时间 – 通过使用附近的CDN服务器(以及其他优化措施),将内容分发到网站访问者附近,访问者将能体验到更快的页面加载时间。由于访问者更倾向于离开加载缓慢的网站,CDN 可以降低跳出率并增加人们在该网站上停留的时间。换句话说,网站速度越快,意味着更强的用户粘性。 2.减少带宽成本 – 网站托管的带宽消耗成本是网站的主要费用。通过缓存和其他优化

python连接数据库

会有一股神秘感。 提交于 2021-01-10 08:59:37
python数据库连接池 查询mysql元数据库某表的列名,列备注和列顺序 def con_mysql(): """mysql -h 0.0.0.0 -p**** -u **** -p**** select COLUMN_NAME,COLUMN_COMMENT from `COLUMNS` where TABLE_NAME='tb' group by COLUMN_NAME,COLUMN_COMMENT order by ORDINAL_POSITION """ connect_pool = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=10, # 连接池允许的最大连接数,0和None表示没有限制 mincached=2, # 初始化时,连接池至少创建的空闲的连接,0表示不创建 maxcached=8, # 连接池空闲的最多连接数,0和None表示没有限制 blocking=True, # 链接池中如果没有可用共享连接后,是否阻塞等待,True表示等待,False表示不等待然后报错 setsession=[], # 开始会话前执行的命令列表 ping=0, # ping Mysql 服务端,检查服务是否可用 host='0.0.0.0', port=****, user='****', password='****',

Python 进制转换

戏子无情 提交于 2021-01-10 08:58:16
<pre class="line-numbers"><code class="language-python">def bytes2human(n): symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') prefix = {} for i, s in enumerate(symbols): prefix[s] = 1 << (i + 1) * 10 for s in reversed(symbols): if n >= prefix[s]: value = float(n) / prefix[s] return '%.1f%s' % (value,s) return '%sB' % n </code></pre> <h2 id="toc_0">python语言n = (n+1)<<1是什么意思</h2> <p>前提n得有一个初始值,比如n=1,不然会报错那么n=n+1的意思就1+1再赋值给变量n,那么n就等于2。然后<<符号是按位左移的意思,就是把对象转为2进制,有效数字往左移动。<<1就是按位左移1个单位。比如2<<1意思就是2按位左移1个单位,2的二进制就是00000010,左移一位就是00000100,转为十进制就是4。那么按位左移多少个单位的操作,你可以理解为对象乘以2的单位次方。上面的2<<1也就是2乘以2的1次方等于4

python爬虫-爬取你想要的小姐姐

旧城冷巷雨未停 提交于 2021-01-10 08:56:50
一、准备 1. 原地址 2. 检查html发现,网页是有规则的分页, 最大图片的class为pic-large 二、代码 1 import requests 2 import os 3 from bs4 import BeautifulSoup 4 5 url = ' http://www.win4000.com/wallpaper_detail_157712.html ' 6 imgmkdir = ' D://Download//ghost_1// ' 7 8 9 # 获取网页url 10 def getUrlList(): 11 imgUrlList = [] 12 for i in range(0, 10 ): 13 imgUrl = '' 14 url_split = url.split( ' .html ' ) 15 if not i == 0: 16 imgUrl += url_split[0] + ' _ ' + str(i) + ' .html ' 17 # print(imgUrl) 18 imgUrlList.append(imgUrl) 19 20 return imgUrlList 21 22 23 # 下载图片 24 def downImg(imgUrl): 25 try : 26 if not os.path.exists(imgmkdir): 27

第八章 Python之常用模块

点点圈 提交于 2021-01-10 08:37:00
日志模块 import logging import logging # 默认级别为warning,默认打印到终端 logging.debug( ' debug ' ) # 10 logging.info( ' info ' ) # 20 logging.warning( ' warn ' ) # 30 logging.error( ' error ' ) # 40 logging.critical( ' critical ' ) # 50 可在logging.basicConfig()函数中通过具体参数来更改logging模块默认行为,可用参数有 filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。 filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。 format:指定handler使用的日志显示格式。 datefmt:指定日期时间格式。 level:设置rootlogger(后边会讲解具体概念)的日志级别 stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。 #

算法图解

橙三吉。 提交于 2021-01-10 07:07:50
1. 二分法:一组n个数字(有序排列)找到一个准确的数字,用二分法最多只要找log2n次。 def binary_search(list, item): low = 0 high = len(list) - 1 while low <= high: mid = round((low + high) / 2 ) guess = list[:mid] if guess == mid: return mid if mid > item: high = mid-1 continue else : low = mid + 1 continue return None my_list = [1,3,6,9,12,16,17,21,29,32 ] print (binary_search(my_list, 3)) 2. 选择排序: 在内存中,数组空间不够时,内存必须重新分配新的足够的空间给数组;但是列表不需要全部重新分配,只要分配多余的空间给新来的元素,并用随机的内存地址串在一起。 但是要读取列表时,不能直接读取后面的元素,必须先访问元素1,然后元素2,直到最后一个元素。数组可以随意访问。 选择排序或者叫冒泡排序: def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1,len(arr)): #

算法图解(选择排序)

谁说胖子不能爱 提交于 2021-01-10 05:21:58
前言: 今天是第二篇 学习两种数据结构 --- 数组、链表 在这之前你必须明白什么是大O表示法和对数 后面的算法也都会使用大O表示法 根据条件选择合适的排序 数组和链表各有优缺点 排序是一种重要的算法 数组是快速查找的基石 二分查找就是基于数组排序 链表修改速度快 如果有其他算法排理解起来会更容易 选择算法: 内存的工作原理: 就好比超市里的储物柜每一抽屉都才可以存东西而且对应条形码 每一个条形码就好比内存地址 计算机的内存就好像是很多抽屉的集合 fe0ffeeb是一个内存单元的地址 需要储存多项数据时有两种基本方式 链表、数组 但他们并非都适用于所有情形 因此知道他们的差别很重要 数组和链表: 就好比你跟朋友去看电影,找到地方坐下后又来一位朋友,但原来坐的地方没位置了 你需要重新找一个可以容纳四个人的地方 所有人都会移到哪里去 如果又来一位就需要重新找地方 就好比内存空间 有一种做法是提前预留空间这种做法并不好 第一如果添加元素超出预留空间还是要重新分配内存 第二如果预留空间用不上 纯属浪费内存空间 你不用别人也用不了 再多的内存也架不住程序员的浪费 链表: 链表中的元素可用存放在内存的任何地方 每个元素都存储了下一元素的地址 从而使一些随机的内存串在一起 使用链表时 根本不需要移动元素 比如说6个人一起看电影 没有连座 这里用上网更合适 网吧打LOL 五连坐 对吧

python 赋值语句

纵然是瞬间 提交于 2021-01-10 04:59:28
python中的语句: 赋值语句 if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。 for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。 while语句,当条件为真时,循环运行语句块。 try语句。与except, finally, else配合使用处理在程序运行中出现的异常情况。 class语句。用于定义类型。 def语句。用于定义函数和类型的方法。 pass语句。表示此行为空,不运行任何操作。 assert语句。用于程序调适阶段时测试运行条件是否满足。 with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行退出后释放锁。 yield语句。在迭代器函数内使用,用于返回一个元素。 raise语句。抛出一个异常。 import语句。导入一个模块或包。常用写法:from module import name, import module as name, from module import name as anothername 特别说明,以上划分也不是很严格,有的内容,有的朋友不认为属于语句。这没关系,反正就是那个东西,在编程中使用。不纠结于名词归类上。总之这些都是要掌握的,才能顺利编程呢。 赋值语句 实例: >>> hiekay = 1 >>>