not与逻辑判断句if连用,代表not后面的表达式为False的时候,执行冒号后面的语句。比如:
a = False
if not a: (这里因为a是False,所以not a就是True)
print "hello"
这里就能够输出结果hello
a = None同理
cainiaofei
2022-09-30
Python中∧是位运算中的异或运算符,Python语言支持以下类型的运算符:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级等,其中,按位运算符是把数字看作二进制来进行计算的,Python中的按位运算法则如下:
a = 50
b = 70
a的二进制格式就是: 0011 0010
b的二进制格式就是: 0100 0110
(1)a & b = 0000 0010,按位与运算的运算符是 &,它有 2 个操作数,其运算法则是,如果两个相应位都为1,则该位的结果为1,否则为0
c = a & b
print(c)
输出结果为:
2
(2)a | b = 0111 0110,按位或运算的运算符是 |,它有 2 个操作数,运算法则是,只要对应的二个二进位有一个为1时,结果位就为1
c = a | b
print(c)
输出结果为:
118
(3)a ^ b = 0111 0100,按位异或运算的运算符是 ^,它有 2 个操作数,运算法则是,按位将 2 个操作数对应的二进制数一一对应,当对应位的二进制值相同(同为 0 或同为 1)时,所得结果为 0;反之,则为 1
c = a ^ b
print(c)
输出结果为:
116
cainiaofei
2022-09-30
下面介绍几种Python 连接 MySQL 的方法:
MySQL-python
:
MySQL-python 又叫 MySQLdb,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x,而且安装的时候有很多前置条件,因为它是基于C开发的库,在 Windows 平台安装非常不友好,经常出现失败的情况,现在基本不推荐使用,取代的是它的衍生版本。
Mysqlclient
:由于
MySQL-python 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同时支持 Python3.x,是 Django ORM的依赖工具,如果你想使用原生 SQL 来操作数据库,那么推荐此驱动。安装方式和 MySQLdb 是一样的
。
PyMySQL
:
PyMySQL 是纯 Python 实现的驱动,速度上比不上 MySQLdb,最大的特点可能就是它的安装方式没那么繁琐,同时也兼容 MySQL-python
Peewee
:写原生
SQL 的过程非常繁琐,代码重复,没有面向对象思维,继而诞生了很多封装 wrapper 包和 ORM 框架,ORM 是 Python 对象与数据库关系表的一种映射关系,有了 ORM 你不再需要写 SQL 语句。提高了写代码的速度,同时兼容多种数据库系统,如sqlite, mysql、postgresql,付出的代价可能就是性能上的一些损失。如果你对 Django 自带的 ORM 熟悉的话,那么 peewee的学习成本几乎为零。它是 Python 中是最流行的 ORM 框架。
SQLAlchemy
:如果想找一种既支持原生
SQL,又支持 ORM 的工具,那么 SQLAlchemy 是最好的选择,它非常接近 Java 中的 Hibernate 框架。
cainiaofei
2022-09-30
Python相对于其他语言来说,是很适合初学者进行学习的,通俗易懂好上手,可以很快做出一定的成果,python语言的难度比C++低很多,python是一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。所以初学者适合学习python。
python自身是在其他语言的根基之上衍生出来的,包含了C++、ABC、Algol-68、SmallTalk、Unix shell 和其他的脚本语言。不同于其他编程语言,python在学习之初并不需要其他复杂的知识背景,就可以入手学习。 同时,python近来的热度也越来越高。因为python 的实用性非常强,现在以及未来,人工智能AI 编程的主流工具都是python,所以python更适合初学者。
后端开发、前端开发、爬虫开发、人工智能、金融量化分析、大数据、物联网等,python应用无处不在,搜索引擎Google的核心代码是python完成的、迪士尼公司动画生成的Unix版本都内建了python环境支持、国内知名的豆瓣网是使用python技术建立……可见python应用开发技术在各公司都有大规模使用,python的发展前景是不可估量的。
python为脚本语言,需要边解释边运行。好处是不需要编译,可以直接运行。坏处是由于边解释边运行,运行效率慢。C++为编译语言需要先编译再运行。好处是运行速度快,尤其对于大型程序,效率提升明显。坏处是程序更新后,需要重新编译运行,不是很方便。
python语法简单,语句简洁,使用方便,上手容易,而且不需要编译可以即使运行,尤其在Jupyter Notebook上运行,那叫一个得心应手。C++语法复杂,格式要求高,使用不便,上手较难。
python在人工智能领域占据有压倒性的优势,有众多的库支持,大多数第三方库都是基于python开发或者提供完整的API。
当然,学习哪门编程语言还要结合自己的职业发展方向与兴趣爱好,不要单纯为了学习工具而学习。
cainiaofei
2022-09-30
有关vs2017添加python的方法如下:
(1)Python环境的搭建:以Anaconda为例,可以帮我们将python环境搭建完毕,选择适合的Anaconda版本下载即可,下载完毕之后就是安装了,Anaconda会帮我们将Python环境搭载完毕的。
(2)VS2017中Python开发的选择:如果已经安装过VS2017,直接运行Visual Studio Installer,然后选择修改,再勾选“Python开发”和“数据科学和分析应用程序”即可。如果是没有安装过VS2017,需要现在VS官网下载最新的VS2017即可,安装完毕后,VS2017会自动引入我们前面安装的python环境。
(3)测试环境:环境搭建完毕之后就需要测试一下是否搭建成功了,打开VS选择python应用程序;可以看到我们安装的Python3.6已经引入了。接下来点击“附加”按钮即可。
cainiaofei
2022-09-30
「人生苦短,我用 Python」这句话是python的创始人吉多·范罗苏姆说的,当然他最开始是说的英语,原话是:"Life is short, you need python.",于1990 年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。 Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。 2021年10月,语言流行指数的编译器Tiobe将Python加冕为最受欢迎的编程语言,20年来首次将其置于Java、C和JavaScript之上。
cainiaofei
2022-09-30
python自身是在其他语言的根基之上衍生出来的,包含了C++、ABC、Algol-68、SmallTalk、Unix shell 和其他的脚本语言。不同于其他编程语言,python在学习之初并不需要其他复杂的知识背景,就可以入手学习。 同时,python近来的热度也越来越高。因为python 的实用性非常强,现在以及未来,人工智能AI 编程的主流工具都是python,所以python更适合初学者。
后端开发、前端开发、爬虫开发、人工智能、金融量化分析、大数据、物联网等,python应用无处不在,搜索引擎Google的核心代码是python完成的、迪士尼公司动画生成的Unix版本都内建了python环境支持、国内知名的豆瓣网是使用python技术建立……可见python应用开发技术在各公司都有大规模使用,python的发展前景是不可估量的。
python为脚本语言,需要边解释边运行。好处是不需要编译,可以直接运行。坏处是由于边解释边运行,运行效率慢。C++为编译语言需要先编译再运行。好处是运行速度快,尤其对于大型程序,效率提升明显。坏处是程序更新后,需要重新编译运行,不是很方便。
python语法简单,语句简洁,使用方便,上手容易,而且不需要编译可以即使运行,尤其在Jupyter Notebook上运行,那叫一个得心应手。C++语法复杂,格式要求高,使用不便,上手较难。
python在人工智能领域占据有压倒性的优势,有众多的库支持,大多数第三方库都是基于python开发或者提供完整的API。
当然,学习哪门编程语言还要结合自己的职业发展方向与兴趣爱好,不要单纯为了学习工具而学习。
cainiaofei
2022-09-30
C/C++ 有强烈的学术背景,Java / C# 有强烈的商业背景,这些背景确保了有足够多的人和公司对这些语言有信心,从而促进了这些语言的大规模应用,之后就靠惯性了。java是有些啰嗦,不过ide能帮忙减少80%以上的键盘敲击,同时静态分析能帮忙解决80%以上的低级错误,代码提示能帮忙减少80%以上的查文档时间,至于强大的重构能力更是python望尘莫及的,所以只要是稍微大的项目,用java很可能比python开发速度更快 1. 动态语言相对来说速度慢些.2. 涉及到一些大的工程,Java/C/C++来说可以系统性的更准确高效的解决问题.3. 当越到低层和硬件关系更近时, C/C++可以更好的完成任务.直接编译成机器语言.
而Python和Ruby需要运行环境.当然, Python等动态语言用来做一个工具处理一些日常数据还是很好用的,或者用Python Django做网站.但一涉及到大型工程就需要用Java/C/C++了,工具是用来解决问题的,能比较好的解决问题就可能被用的多,而不是说这个工具有多精致 越是复杂的项目,使用静态语言可以利用编译器更早的发现和避免问题。这并不是说动态语言并不能用于大型项目,但是在超过一定规模之后,动态语言轻便灵活的优势就会被重构时的困难给抵消掉。另一个原因是性能上的,同理,也不是动态语言写不出高效的代码,而是花在优化上的时间会更多,而团队人多了水平难免参差不齐,不如静态语言稳妥。
哪个工具好,要看解决的问题是什么,最近什么技术流行,只能说明这个技术适用的问题域变成了普遍问题而已。
cainiaofei
2022-09-30
世界上本来没有计算机,工程师创造了它。为了让告诉计算机需要做什么事情,工程师发明了程序设计语言。简单粗暴的编程:C语言:用来学编程;C++语言:用来使劲儿学编程;C#:用来在windows操作系统上学编程;java:想找工作学编程;javaScript:想做网页学编程;HTML:以为自己在学编程;python:数据分析;什么是HTML(超文本标记语言 Hyper Text Markup Language),HTML 是用来描述网页的一种语言。CSS(层叠样式表 Cascading Style Sheets),样式定义如何显示 HTML 元素,语法为:selector {property:value} (选择符 {属性:值});JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。
cainiaofei
2022-09-30
Python只是一个帮助我们实现需求的工具,当然目前也已经发展的非常成熟,自2010年初以来一直蓬勃发展至今,在流行程度上,也超越了C、C++、Java等老牌编程语言。也得到了广泛应用,但是并不会对你未来的职业发展产生决定性的影响,所以学习一门工具建议在职业规划需求的基础上进行,虽然Python从90年代便已出现,这不仅意味着它有足够的时间来发展,还意味着拥有一个庞大而强有力的社区支持。所以你在用Python编程的时候,如果遇到了任何问题,只要网上搜索一下,大概率就能解决掉。其次,Python对于初学者来说是友好的。对于这一点,并不是说它存在了几十年,给了程序员们充足的时间来写使用教程。而是Python的语法易读性特别好。例如你不需要指定数据类型,只要声明一个变量,Python会根据上下文,理解这个变量是属于整数、浮点数、布尔值等等。这对于初学者来说优势是巨大的。如果你用过C++,你就有可能体会到这样的痛苦:程序跑不出来,可能仅仅是因为把一个浮点数指定成了整数……以及,如果对比着读过Python和C++的代码,你就能深刻的体会到Python代码理解起来是有多么容易。Python从出现至今,开发人员几乎在各个领域、用途方面开发了包(package),想处理数字、向量和矩阵?Numpy是的你首选。
想进行技术和工程方面的计算?SciPy了解一下。想在数据处理和分析领域大展身手?Pandas值得一试。想涉足人工智能?Scikit-Learn等,当然,没有一个技术是完美的,Python也不例外,比如第一,速度 (Speed)。平均来说,用Python运行一个任务所需要的时间,是其他语言的2-10倍,其中一个原因就是它是动态类型。另一个原因是Python一次只能执行一个任务。这是灵活数据类型的结果——Python需要确保每个变量只有一个数据类型,故而不支持并行进程。第二,作用域 (Scope)。最初,Python是动态确定作用域的。这基本上就意味着,要对表达式求值,编译器首先需要搜索当前块,然后依次搜索所有调用函数。
动态作用域的问题在于,每个表达式都需要在每个可能的上下文中进行测试。这个是相当繁琐的过程,这也就是为什么大多数现代编程语言使用静态作用域的原因。第三,Lambda。
尽管Python内部的灵活性很好,但Lambda的使用还是相当有限制的。Lambda只能是Python中的表达式,而不能是语句。第四,空白符 (Whitespaces)。在Python中,你可以用空格和缩进来表示不同级别的代码,很容易理解。
cainiaofei
2022-09-30
(1)会导致当前的文件一直被占着,无法再被其他程序使用
(2)使用remove()函数时会出现python解释器报错
(3)没有关闭的情况下如果要进行数据写入,则会导致写入失败
(4)影响电脑的cpu
cainiaofei
2022-09-30
cainiaofei
2022-09-30
np.random.multivariate_normal方法用于根据实际情况生成一个多元正态分布矩阵,其在Python3中的定义如下:
def multivariate_normal(mean, cov, size=None, check_valid=None, tol=None)
其中mean和cov为必要的传参而size,check_valid以及tol为可选参数。
mean:mean是多维分布的均值维度为1;
cov:协方差矩阵(协方差基本概念戳这里),注意:协方差矩阵必须是对称的且需为半正定矩阵;
size:指定生成的正态分布矩阵的维度(例:若size=(1, 1, 2),则输出的矩阵的shape即形状为 1X1X2XN(N为mean的长度))。
check_valid:这个参数用于决定当cov即协方差矩阵不是半正定矩阵时程序的处理方式,它一共有三个值:warn,raise以及ignore。当使用warn作为传入的参数时,如果cov不是半正定的程序会输出警告但仍旧会得到结果;当使用raise作为传入的参数时,如果cov不是半正定的程序会报错且不会计算出结果;当使用ignore时忽略这个问题即无论cov是否为半正定的都会计算出结果。
cainiaofei
2022-09-30
cainiaofei
2022-09-30
# -*- coding:utf-8 -*-
import serial
from socket import *
import time
host = ''
port = 13142
bufsize = 1024
addr = (host, port)
def serialmode():
ser = serial.Serial("com6", 115200)
sdata = ser.readline().decode("GB2312")
while True:
a, b, c = sdata.split(",")
print(a, b, c)
def UDPmode():
udpServer = socket(AF_INET, SOCK_DGRAM)
udpServer.bind(addr) # 开始监听
print("Waiting for connection....")
while True:
data, xxx = udpServer.recvfrom(bufsize)
data = data.decode(encoding='ascii')
print(data, end=" ")
print("nowtime:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
if __name__ == '__main__':
serialmode()
UDPmode()
cainiaofei
2022-09-30
Math库是不需要单独安装的,是python自带的标准库,官方文档的介绍是:math ---数学函数,该模块提供了对C标准定义的数学函数的访问。这些函数不适用于复数;如果你需要计算复数,请使用cmath模块中的同名函数。将支持计算复数的函数区分开的目的,来自于大多数开发者并不愿意像数学家一样需要学习复数的概念。得到一个异常而不是一个复数结果使得开发者能够更早地监测到传递给这些函数的参数中包含复数,进而调查其产生的原因。该模块提供了很多函数。除非另有明确说明,否则所有返回值均为浮点数。常用的函数有:
import math #引入math库并不需要pip安装
print(math.fabs(-6.0)) #求绝对值
#6.0
print(math.pow(2,3)) #返回2的3次方
#8.0
print(math.ceil(4.8)) #向上取整
#5
print(math.floor(4.8)) #向下取整
#4
print(math.sqrt(9)) #求平方根
#3.0
print(math.fsum([1,2,3])) #求一个序列的和
#6.0
print(math.factorial(3)) #求阶乘
#6
math库不能解决小数位数不确定的情况,它仅仅相当于在python基本的计算方式上,扩展了一些计算。当然python本身也可以进行一些简单的运算:
print(2+3)
#5
print(3-2)
#1
print(2*3)
#6
print(3/2)
#1.5
print(2**3)
#8
print(2.0+3.0)
#5.0
print(2+3.0)
#5.0
print(abs(-6.0))
#6.0
print(3+5j)
#(3+5j)
print(0.2+0.1)
#0.30000000000000004
cainiaofei
2022-09-30
在python中,很多时候需要进行真假判断,也就是会经常用到布尔型变量,在python中,表示真假的不一定要用true和false,也可以通过数字来表示,其中0表示假,即0与false同义,其他的非0 数字表示真,即与true同义,那么,if 2就表示如果是真的,则执行以下操作。
If 结构主要是让程序做出选择,并根据不同的情况执行不同的操作,包括以下用法:
(1)只有 if 进行判断desserts = ['ice cream', 'chocolate', 'apple crisp', 'cookies']
favorite_dessert = 'apple crisp'
hate_dessert = 'chocolate'
for dessert in desserts:
if dessert == favorite_dessert:
print("%s is my favorite dessert!" % dessert.title())
(2)if - else 进行判断for dessert in desserts:
# 比较运算符(== 相等 、!= 不等、> 大于、>= 大于等于、< 小于、<=小于等于)if dessert == favorite_dessert:
print("%s is my favorite dessert!" % dessert.title())
# elif => else + if 当前值不符合上面 if 的判断条件,执行 elif 的判断条件
else:
print("I like %s." % dessert)
(3) if - elif - else 进行判断,其中 elif 不是唯一的,可以根据需要添加,实现更细粒度的判断
# 对不同的 dessert 输出不完全相同的结果for dessert in desserts:
# 比较运算符(== 相等 、!= 不等、> 大于、>= 大于等于、< 小于、<=小于等于)if dessert == favorite_dessert:
print("%s is my favorite dessert!" % dessert.title())
# elif => else + if 当前值不符合上面 if 的判断条件,执行 elif 的判断条件
elif dessert == hate_dessert:
print("I hate %s." % dessert)
# 当前值不符合上面所有的判断条件,就执行 else 里的语句
# 当然如果这个else 不需要的话,可以不写
else:
print("I like %s." % dessert)
值得注意的一点是:当整个 if 判断满足某一个判断条件时,就不会再继续判断该判断条件之后的判断
(4)特殊的判断条件if 0: # 其他数字都返回 True
print("True.")
else:
print("False.") # 结果是这个
if '': #其他的字符串,包括空格都返回 True
print("True.")
else:
print("False.") # 结果是这个
if None: # None 是 Python 中特殊的对象
print("True.")
else:
print("False.") # 结果是这个
if 1:
print("True.") # 结果是这个
else:
print("False.")
if -1:
print("True.") #结果是这个
else:
print("False.")
cainiaofei
2022-09-30
Python的GDAL摸块可以实现MODIS遥感影像数据的读取和计算, MODIS和MOD03数据是HDF4格式文件,需要用import pyhdf.SD as hdf和 from pyhdf.SD import SD
下载pyhdf:下载地址添加链接描述https://www.lfd.uci.edu/~gohlke/pythonlibs/,选择自己适配的版本,比如python是3.8.5,32位,那就下载pyhdf-0.10.3-cp38-cp38-win32.whl。
安装
pyhdf:使用anaconda3
时,
直接打开Anaconda Prompt(software)
打开后将路径转到刚刚下载的p
yhdf
路径下,输入
python -m pip install pyhdf-0.10.3-cp38-cp38-win32.whl
进行安装
注意:可能需要进行p
ip
升级,路径一定不要搞错了
cainiaofei
2022-09-30
Python的print()函数是常用的函数,输出会自动换行是因为默认将参数end设置成了‘\n’,如果想要不换行显示,只要根据需要,把 参数end 设置为‘’(空字符)或‘ ’(空格符)即可。
(1)默认换行的时候
for letter in letters.keys():
for i in range(letters[letter]):
print(letter,end='\n')
(2)修改为不换行的时候
for letter in letters.keys():
for i in range(letters[letter]):
print(letter,end='')
for letter in letters.keys():
for i in range(letters[letter]):
print(letter,end=' ')
cainiaofei
2022-09-30
Python安装后是没有快捷方式的,Python自带的有idle,可以使用idle来编辑运行Python文件。如果在cmd中输入Python命令无法找到的话,是因为Python安装时没有配置环境变量。
Python配置环境变量的方法:
方法一:使用cmd命令添加path环境变量
在cmd下输入: path=%path%;D:\Python3 接着按"Enter"回车键。
其中: D:\Python3 是Python的安装目录。
方法二:在环境变量中添加Python目录
(1) 右键点击"计算机",然后点击"属性"
(2) 然后点击"高级系统设置"
(3) 选择"系统变量"窗口下面的"Path",双击即可!
(4) 然后在"Path"行,添加python安装路径即可。
(5) 最后设置成功以后,在cmd命令行,输入命令"python",就可以出现相关显示。
cainiaofei
2022-09-30