python函数

python学习笔记(二)

怎甘沉沦 提交于 2020-04-07 17:10:56
一、tuple和list数据类型 共同点:   都是有序集合,集合的元素类型可以是不同的数据类型;   第1元素索引为0,都可以用 变量[索引] 这样方式访问元素。最后一个元素索引号也可以是-1表示,以此类推。 不同点:list集合的元素可以改变,集合用[]括号; tuple集合不可以改变,集合用()括号。 #list定义 >>> classmates = ['Michael', 'Bob', 'Tracy'] #tuple定义 >>> classmates = ('Michael', 'Bob', 'Tracy') 定义只有一个元素的tuple,必须要以,号末尾: >>> a=(1,) 计算元素个数: >>> a = (1,2) >>> len(a) 2 list元素的操作: >>> classmates = ['Michael', 'Bob', 'Tracy'] #末尾加元素 >>> classmates.append('Adam') #插入元素到指定位置 >>> classmates.insert(1, 'Jack') #删除末尾元素 >>> classmates.pop() #删除某个指定位置的元素 >>> classmates.pop(1) #替换元素内容 >>> classmates[1] = 'Sarah' #元素也可以是另一个list/tuple >>> s = [

17个新手常见错误,送给初学Python的你!

≡放荡痞女 提交于 2020-04-07 17:02:01
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在类似如下代码中: if spam == 42 print('Hello!') 2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax”) = 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中: if spam = 42: print('Hello!') 3)错误的使用缩进量。(导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”) 记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中: print('Hello!') print('Howdy!') 或者: if spam == 42: print('Hello

明日方舟脚本1.0(python\\adb\\cv2)

会有一股神秘感。 提交于 2020-04-07 16:45:32
一、目的 《Python从入门到实践》第14章拉拉杂杂“抄”完,急于练手,便捡起以前一直想写却没写完的“鼠标键盘模拟”程序。 二、思考 图1.0 auto_game思考方向 如图1.0,思考了两种实现方法。 第一种方法是在电脑层面模拟电脑鼠标点击。使用pyautogui库实现之后,MUMU模拟器内运行游戏并未做出相应反应。更换20180111版本MUMU,仍然不成功。如果仍想采用这种思路,就需要更换模拟器软件,或者采用驱动级鼠标键盘模拟。本文对此不再进行讨论。 第二种方法通过使用adb命令控制安卓手机实现。下面对第二种方法予以讨论。 (一)模拟过程 如图1.1所示,明日方舟1-7刷图可以分为三个部分:开始(①、②)、等待(③)、结束(④)。 图1.2 1-7刷图过程 1.开始阶段(①、②) 需要在两个特定位置(“开始行动”)点击两次。 2.等待阶段(③) 需要等待一段时间。 3.结束阶段(④) 需要在除“获得物品”之外的其他地方点击一次。 (二)实现思路 1.判断当前游戏阶段 使用adb命令截图,cv2判断特定图形出现在截图中的可能性,超过阈值,即为出现特定场景。 2.特定场景时发出点击命令 3.点击位置伪随机 4.点击时间间隔伪随机 5.特殊情况 开始阶段的①、②两图需要点击的按钮范围存在重合部分。可以将两次独立的判断后点击合并为:判断出现场景①后,点击两次。 结束阶段的④图

Python——五分钟理解函数式编程与闭包

你说的曾经没有我的故事 提交于 2020-04-07 15:33:34
函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听说的时候不明觉厉,觉得这是一个非常黑科技的概念。但是实际上它的含义很朴实,但是延伸出来许多丰富的用法。 在早期编程语言还不是很多的时候,我们会将语言分成 高级语言与低级语言 。比如汇编语言,就是低级语言,几乎什么封装也没有,做一个赋值运算还需要我们手动调用寄存器。而高级语言则从这些面向机器的指令当中抽身出来,转而面向过程或者是对象。也就是说我们写代码面向的是一段计算过程或者是一个计算机当中抽象出来的对象。如果你学过面向对象,你会发现和面向过程相比,面向对象的抽象程度更高了一些,做了更加完善的封装。 在面向对象之后呢,我们还可以做什么封装和抽象呢?这就轮到了函数式编程。 函数我们都了解,就是我们定义的一段程序,它的输入和输出都是确定的。我们把一段函数写好,它可以在任何地方进行调用。既然函数这么好用,那么能不能 把函数也看成是一个变量进行返回和传参 呢? OK,这个就是函数式编程最直观的特点。也就是说我们写的一段函数也可以作为变量,既可以用来赋值,还可以用来传递,并且还能进行返回。这样一来,大大方便了我们的编码,但是这并不是有利无害的,相反它带来许多问题,最直观的问题就是由于函数传入的参数还可以是另一个函数,这会 导致函数的计算过程变得不可确定 ,许多超出我们预期的事情都有可能发生。 所以函数式编程是有利有弊的

Python爬虫案例演示:Python多线程、多进程、协程

安稳与你 提交于 2020-04-07 15:32:41
很多时候我们写了一个爬虫,实现了需求后会发现了很多值得改进的地方,其中很重要的一点就是爬取速度。本文 就通过代码讲解如何使用 多进程、多线程、协程 来提升爬取速度。注意:我们不深入介绍理论和原理,一切都在代码中。 二、同步 首先我们写一个简化的爬虫,对各个功能细分,有意识进行函数式编程。下面代码的目的是访问300次百度页面并返回状态码,其中 parse_1 函数可以设定循环次数,每次循环将当前循环数(从0开始)和url传入 parse_2 函数。 import requestsdef parse_1(): url = 'https://www.baidu.com' for i in range(300): parse_2(url)def parse_2(url): response = requests.get(url) print(response.status_code)if __name__ == '__main__': parse_1() 性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待 示例代码就是典型的串行逻辑, parse_1 将url和循环数传递给 parse_2 , parse_2 请求并返回状态码后 parse_1 继续迭代一次,重复之前步骤 三、多线程 因为CPU在执行程序时每个时间刻度上只会存在一个线程

Python学习笔记:函数和变量详解

半城伤御伤魂 提交于 2020-04-07 12:31:40
  一、面向对象:将客观世界的事物抽象成计算机中的数据结构 类:用class定义,这是当前编程的重点范式,以后会单独介绍。二、函数编程:逻辑结构化和过程化的一种编程方法 1、函数-->用def定义 2、好处: a、重用逻辑 b、保持一致性:改一个地方,其他调用的地方都会改 c、可扩展性 注意:可复用的逻辑一定要用函数写 3、函数的返回值: a、返回多个值,Python会将多个值装到元组中返回 b、返回1个值,则返回一个object c、无返回值,则Python默认返回None三、函数的参数:  1、实参:即实际参数,是在调用时传递给函数的参数,必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。   2、形参:即形式参数,形参是函数被调用时用于接收实参值的变量。  3、位置参数,与形参的位置一对一对应,比如:test(4,5)  4、关键字参数,无需位置一对一对应,比如:test(x,y),调用的时候也可以写成test(y=5,x=4),因为有指定关键词,所以无需按顺序写  5、位置和关键词调用混合时:关键词参数不能写在位置参数前面,比如:     def test(x, y, z):     print("%d %d %d" % (x, y, z))    x = 1    y = 2    z = 3    test(x, y, z) #

使用python完成对excel的操作

▼魔方 西西 提交于 2020-04-07 12:28:00
import numpy as np import pandas as pd 1.通过外部文件导入数据表 df=pd.DataFrame(pd.read_csv('name.csv',header=1)) df=pd.DataFrame(pd.read_Excel('name.xlsx')) 2.通过填入数据生成数据表 df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], "date":pd.date_range('20130102', periods=6), "city":['Beijing ', 'SH', ' guangzhou ', 'Shen zhen', 'shanghai', 'BEIJING '], "age":[23,44,54,32,34,32], "category":['100-A','100-B','110-A','110-C','2 10-A','130-F'], "price":[1200,np.nan,2133,5433,np.nan,4432]}, columns =['id','date','city','category','age', 'price']) 3.检查数据表的维度:shape属性 df.shape 结果输出 (6,6) 4.查看数据表信息 df.info() 5

Python 标准库 18.5

孤街醉人 提交于 2020-04-07 12:05:57
Event Loop event loop 对象包含两个部分:event 和 loop。event 负责 I/O 事件通知而 loop 负责循环处理 I/O 通知并在就绪时调用回调。这里 event 的含义与 select 中的 event mask 类似。 BaseEventLoop 类实现了基本的 loop 部分,而类似于 BaseSelectorEventLoop 这样的类实现了基于 selector 的 event 部分。 event loop 内部维护着两个容器: _ready 和 _scheduled 。类型分别是 deque 和 list 。_ready 代表已经可以执行,_scheduled 代表计划执行。_scheduled 中的 handle 是可以 cancel 的。 一次 loop 的基本流程可以参见 _run_once() 方法,其说明文档如下: This calls all currently ready callbacks, polls for I/O, schedules the resulting callbacks, and finally schedules 'call_later' callbacks. 流程为: 将 _scheduled 中已 canceled 的 handle 去掉 检查 _ready 和 _scheduled

Python-字符串及列表操作-Day2

a 夏天 提交于 2020-04-07 11:36:39
1.数据类型 1.1 变量引出数据类型 变量:用来记录状态 变量值的变化就是状态的变化,程序运行的本质就是来处理一系列的变化 1.2 五大基本数据类型: 数字 字符串 列表 元组 字典 1.2.1 数字 二进制:0101010 #对应的调用bin() 八进制:1-7 #对应的调用oct() 十六进制:0-9abcdef #对应的调用hex() 整型 长整型 浮点 布尔 复数 1.2.2 整型 内置函数是:int() int(a,base=b) a是变量或者是"a(未定义变量)" base=b b告诉计算机以什么进制进行运算 一切皆对象 age = 10 ---> int(10)---> init --->调用 以上说明所有的变量最终都是通过对象来生成创建的 python3中int()已经没有区分整型与长整型 1.2.3 布尔 True 和 False 1和0 1.2.4 浮点float Python的浮点数就是数学中的小数 1.2.5 复数 复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。 注意,虚数部分的字母j大小写都可以, 1.3 + 2.5j == 1.3 + 2.5J True 1.3 字符串 字符串的定义: msg="hello world" 1.3.1 字符串模块方法1: #首字母大写: print

Python 打包和发布方法汇总

强颜欢笑 提交于 2020-04-07 11:33:10
以下主要Python打包汇总,作为学习备份; 一、使用python内部基础工具包Distutils打包程序   1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件;   示例(setup.py):   from distutils.core import setup   setup(name='Hello',      version='1.0',      description='example',      author='haomiao',      py_modules=['hello'])   该配置文件,只使用了py_modules参数,单一的模块文件名hello.py,当然还有其他的属性、选项可设置;hello.py应与setup.py在同一目录下,分发的时候最好将该目录作为单独的一个目录文件,并将其所依赖的或需要的文件、资源均放在这个目录下或其子目录下,该目录就可以分发给其他开发人员或客户(一般的最终客户不会做这些安装的繁琐事情);   此外,若有其他的资源文件或是其他的多个py文件,则可以增加packages等其他相关的参数指令。   将该目录模块安装到python中;执行:python setup.py install ,此后将会复制相关文件至python安装路径下的Lib/site-packages下,   如上示例将会在该路径下产生