python3

Python3学习笔记- 输入和输出

浪子不回头ぞ 提交于 2020-01-13 15:03:25
一、输出 用 print() 在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出 ' Hello world' ,代码如下 print ('Hello word') print() 函数也可以接受多个字符串,将多个字符串连成一串输出 逗号连接 :多字字符串可用逗号“,”隔开,且输出时 遇到 逗号“,”会输出一个空格 1 print ('I am', 'learning python') 2 # 输出结果为:I am learning python +号连接 : 不推荐使用,需要运算,占内存,效率很低 1 print ('I am '+ 'learning python') 2 # 输出结果为:I am learning python 占位符 :这种 最常用 1 name='fengfeng' 2 print ('I am %s'%name) 3 # 输出结果为:I am fengfeng 占位符根据不同的数据类型而不同 %s string ( 代表后面变量是字符串) %d int ( 代表后面变量是整数) %.2f float ( 代表后面跟的是小数 %.2f保留 2位小数 ,会四舍五入,不指定的默认保留 6位小数) print() 也可以打印整数,或者计算结果,,代码如下 1 print (10) 2 # 输出结果为:10 3 print (10+20) 4 #

AES中ECB模式的加密与解密(Python3.7)

痞子三分冷 提交于 2020-01-13 14:04:32
本文主要解决的问题 本文主要是讲解AES加密算法中的ECB模式的加密解密的Python3.7实现。具体AES加密算法的原理这里不做过多介绍,想了解的可以参考文末的参考链接。 主要解决了两个问题: 在Python3.7版本下,所依赖包的安装问题 。(有一些博客时间久远,其中所提到的模块并不适用于Python3.7) 因为Python版本的问题,其他博客在基于Python3.6下的代码在Python3.7下并不能运行的问题 。 背景介绍 在爬虫项目中遇到,某些网站的账号、密码采用了AES的ECB模式进行了加密。 # 加密前的数据 123456asd # 加密后的数据 3cfeba82c31b6635e8fb085e04529e74 # 密钥 8NONwyJtHesysWpM 使用 在线AES加密解密、AES在线加密解密 ,进行尝试。 经过测试发现,在 AES 加密的 ECB模式 ,填充为 pkcs7padding ,数据块为 128位 ,输出格式为 hex 时,得到自己想要的结果。 (这里可以可以根据密文的格式进行判断输出的格式, 一般密文以==结尾的输出格式为base64 ,否则为hex格式) 问题1:Crypto模块安装报错 pip 安装 pycrypto模块,抛如下错误: error: command 'C:\\Program Files (x86)\\Microsoft

from __future__ import absolute_import,division,print_function的作用

好久不见. 提交于 2020-01-13 12:02:51
绪论:   最近看多的项目中都文件的开头都带引入了三个模块,特地去查了下其作用(注:验证需要在python2的环境下) absolute_import :绝对导入,其作用是导入模块的时候如果在当前项目目录下包含相同的模块,则优先导入标准库,也就是说如果你的当前目录有有个time模块,import time导入的仍然是Python官方的time标准库 division:精确除法,默认情况下2/4的结果是0,导入division后结果是0.5 print_function:print可以作为函数使用,在Python2中 print的书写格式是print xxx,python3中是print(xxx),print_function可以使得python2使用python3的格式 总结:   其实这三个函数的功能就是python2 为了适配python3格式做的补充,所有如果是python3的话,是不需要导入的, 来源: https://www.cnblogs.com/gollong/p/12001669.html

Lettuce(基于Python的BDD工具)

三世轮回 提交于 2020-01-13 03:44:30
一、Lettuce介绍 BDD 了解lettuce需要先了解BDD,BDD是TDD的一种衍生,通过特定的BDD框架,用自然语言或类自然语言,按照编写用户故事或者用户用例的方式,以功能使用者的视角,描述并编写测试用例。 BDD源于TDD并优于测试驱动开发。 之所以说BDD优于测试驱动开发,并非空穴来风,主要原因如下: 更加以人为本:TDD更多关注于测试接口实现逻辑正确性,而BDD重点关注用户使用功能时的行为和结果是否与符合预期。 更加以人为本:TDD基本上是使用编程语言来描述测试用例,而BDD则是用自然语言来描述测试用例。 更加以人为本:TDD不关注客户价值,而BDD从客户价值开始书写 更加以人为本:TDD的需求文档和测试用例是分别存储的,而BDD的需求文档就是测试用例 更加以人为本:TDD要求所有被覆盖的接口都要进行良好重构,而BDD只要求对暴露给客户使用的接口甚至UI具有可测试性 更加以人为本:TDD更多是团队纪律或者领导推动的,而BDD是客户需求拉动的 Lettuce 学习BDD(行为驱动开发),业界流行的BDD框架是Ruby语言编写的Cumumber,不过对于用Python习惯的朋友可以学习一下Cumumber在Python下的衍生品-Lettuce。 lettuce 除了 官方文档 外,几乎找不到其它资料,为了理解lettuce,我们不妨多去看看cucumber 的资料

python3 多线程

坚强是说给别人听的谎言 提交于 2020-01-13 03:00:11
进程——资源分配的最小单位,线程——程序执行的最小单位 什么是进程?     程序的执行实例称为进程。每个进程都提供执行程序所需的资源。一个进程有一个虚拟地址空间,可执行代码,打开系统对象的句柄,安全上下文,一个独特的过程,pid标识符,环境变量,优先级类,最小和最大工作集大小, 并且至少有一个执行线程。 每个进程都是从一个线程开始的, 通常被称为主主线程,但是可以创建额外的 任何线程的线程。 进程与线程的区别?    线程共享内存空间,进程的内存是独立的, 同一个进程的线程之间可以直接交流,两个进程想通信,必须通过一个中间代理来实现, 创建新线程很简单, 创建新进程需要对其父进程进行一次克隆, 一个线程可以控制和操作同一进程里的其他线程,但是进程只能操作子进程 线程基本函数, run() 里面是需要执行的命令, start() 线程启动函数, join() 等待该线程结束, setDaemon(True) 设置为守护线程,设置守护线程需要放在线程启动前 Lock() 线程锁,防止数据的不准确行,线程执行时添加互斥锁 RLock() 递归锁,多个线程时需要添加递归锁,否则会出现锁死 BoundedSemaphore() 信息量,允许同时执行的最大线程数 threading.current_thread() ,当前线程; threading.active_count()

一篇文学会 Pytest 测试框架

∥☆過路亽.° 提交于 2020-01-12 22:35:16
之前有介绍过 python 自带的 Unittest 单元测试框架, Python 自动化测试实战 Zero to Hero 单元测试框架unittest的使用 ,今天再来简单的讲诉下测试框架 pytest 本文首发自伊洛的个人博客: https://yiluotalk.com ,欢迎关注并查看更多内容!!! #####1. 安装开始 直接使用 pip 安装就可以, pytest 支持 python 的 2.0 或 3.0 版本 #!/usr/bin/python3 # 伊洛Yiluo # https://yiluotalk.com pip install - U pytest 检查版本,校验下是否安装成功 #!/usr/bin/python3 # 伊洛Yiluo # https://yiluotalk.com ( yiluo ) ➜ ~ pytest - - version 2. pytest的基础语法规范 文件名应必须以 test 开头或结尾,例如 test_example.py 或 example_test.py 如果将测试定义为类上的方法,类名应以“ Test ”开头。例如, TestExample 。且不包含 __init__ 方法 测试方法名称或函数名称应以 test_ 开头,例如 test_example ,名称与该模式不匹配的方法将不会作为测试执行

python2 与 python3 的编码

瘦欲@ 提交于 2020-01-12 19:25:37
#coding:utf-8 import os import sys #当前环境py2.7 print(sys.getdefaultencoding()) #注意是编码方式,不是编码 #定义一个字符串 str = '中' #print(str) print(len(str)) #长度3, utf-8 #str.encode('gbk') #报错,当前编码环境为ascii 不能直接从ascii映射到gbk 需解码到unicode,在进行编码 #print(str.decode('utf-8').encode('gbk'))#��乱码,当前环境为utf-8,设置gbk 显示正常 #所以python 中定义中文尽量用unicode的方式,即前面加u #python2在编码的问题上还是留了很多的坑 #------------------------Python3------------------------------------ #python3中默认编码方式是utf-8, 默认编码为unicode 所以不管是中文英文都按照一个字符来算 #只是在编码的时候选择对应的编码方式 str1 = '中abc' print(len(str1)) #可以看到输出长度为4 不管是ascii还是中文都按单个字符来算 print(str1.encode('utf-8')) #b'\xe4\xb8

Python3 SMTP发送邮件

不羁的心 提交于 2020-01-12 14:00:21
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法如下: import smtplib smtpObj = smtplib . SMTP ( [ host [ , port [ , local_hostname ] ] ] ) 参数说明: host SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:runoob.com,这个是可选参数。 port 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。 local_hostname 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。 Python SMTP对象使用sendmail方法发送邮件,语法如下: SMTP . sendmail ( from_addr , to_addrs , msg [ , mail_options , rcpt_options ] 参数说明: from_addr: 邮件发送者地址。 to_addrs: 字符串列表,邮件发送地址。 msg: 发送消息 这里要注意一下第三个参数

RobotFramwork安装报错name 'execfile' is not defined

泄露秘密 提交于 2020-01-12 05:50:24
安装RobotFramwork的时候,提示了这个?是什么原因呢? 本机装的是python3.6; 经官方回复得知识因为python的版本不兼容该模块的安装。 官方认定版本是2.7 ,所以这里推荐大家玩python的话,建议两个版本都装上,命令运行时根据该python执行程序的名字来写就好。 比如python的执行程序叫python3.***,那我们的命令就编程 python3 setup.py install就可以了,2同理; 而且编程器是可以选择需要的版本的。 来源: https://www.cnblogs.com/iceb/p/7097445.html

python3-深浅copy

删除回忆录丶 提交于 2020-01-12 04:42:42
转载:https://www.cnblogs.com/ctztake/p/8194275.html 术语 变量:是一个系统表的元素,拥有指向对象的连接空间。 对象:被分配的一块内存,存储其所代表的值。 引用:是自动形成的从变量到对象的指针。 注意:类型(int类型,long类型(python3已除去))对于对象,不是变量。 不可变对象:一旦创建就不可修改的对象,包括字符串,元组,数字。 可变对象:可以修改的对象,包括列表,字典。(可通过hash()来判断对象是否可变) 关于python3深浅拷贝,会以下面三个点来讲述。 先说下copy,这里定义的copy,是指在内存里完全是两块独立的内存空间(既id值不一样),如果两个变量是引用同一个对象的内存地址(id值一样),则不叫copy。 赋值 浅copy 深copy 数字和字符串 对于数字和字符串而言,赋值、深浅拷贝毫无意义,因为他们的值永远都会纸箱同一个内存地址。 # 导入copy模块 >>> import copy # 定义一个变量var1 >>> var1 = 123 # 输出var1的内存地址 >>> id(var1) 1347747440 >>> var2 = var1 # var2的内存地址和var1相同 >>> id(var2) 1347747440 # 浅拷贝 >>> var3 = copy.copy(var1) #