热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:1DAY初识Python

篇首语:本文由编程笔记#小编为大家整理,主要介绍了1DAY初识Python相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了1DAY 初识Python相关的知识,希望对你有一定的参考价值。



技术分享

编译型vs解释型

编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

注解:java代码号称一次编译到处运行,因为java代理需要先编译成字节码(一种中间格式的代码),然后拿着字节码到处运行,每次运行都需要交给jvm去编译成机器指令后才能执行,因而java是混合型

而有的人会有疑问,python代码也是先编译成字节码然后交给python解释器去执行的啊,难道python不是混合型吗?当然不是

1. 首先需要知道,只有在import导入py文件时,才会产生pyc字节码文件,该字节码文件是可以代替源文件而直接执行的

2. 但每次执行py文件,产生的字节码并不会保留下来,也就是说,每次执行py文件,都是要重新经历一遍:py文件->字节码-->python解释器-->机器码,每次都是一个重新解释执行的过程。





3.4 为何选择Python

这他妈的还用问,你都TMD看了这么多,还TMD问这种问题?

C 和 Python、Java、C#等

    C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作

其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

CPython解释器是由C语言开发的

  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
  对于速度:Python的运行速度相较与C,绝逼是慢了

Python 和 Java、C#等

  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
  对于速度:Python在速度上可能稍显逊色

1.速度永远不是关键

对大多数的应用程序来说,并不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。

2.加密也不是关键

对于编译型语言如C语言来说,可以将编译后的代码发给用户,用户反解几乎是不可能的,相当于自带加密功能了。而解释型语言如python只能发布源码给用户,但其实这没什么问题,现在主流的思想是软件开源,千万别意淫你的软件有多么大的商业价值。


3.5 Python解释器的种类

python是一门语言,用这门语言写出的代码,需要由python的解释器去解释执行,解释器有如下分类:



  • Cpython(最常用的版本)
        Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

  • Jyhton
        Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。

  • IronPython
        Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)

  • PyPy(特殊)
        Python实现的Python,将Python的字节码字节码再编译成机器码。

  • RubyPython、Brython ...

以上除PyPy之外,其他的Python的对应关系和执行流程如下:

技术分享

 PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!

 技术分享


3.6 python解释器的发展史



  • 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

  • 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

  • Granddaddy of Python web frameworks, Zope 1 was released in 1999

  • Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

  • Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础

  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生

  • Python 2.5 - September 19, 2006

  • Python 2.6 - October 1, 2008

  • Python 2.7 - July 3, 2010

  • In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible

  • Python 3.0 - December 3, 2008

  • Python 3.1 - June 27, 2009

  • Python 3.2 - February 20, 2011

  • Python 3.3 - September 29, 2012

  • Python 3.4 - March 16, 2014

  • Python 3.5 - September 13, 2015


四 python环境

注意:环境变量的设置


windows:













1

2

3

4

5

6

7



1、下载安装包

    https://www.python.org/downloads/

2、安装

    默认安装路径:C:\\python27

3、配置环境变量

    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录以及安装目录下的Scripts目录追加到变值值中,用 ; 分割】

    如:原来的值;C:\\python27,切记前面有分号





linux:













1

2

3



无需安装,原装Python环境

  

ps:如果自带2.6,请更新至2.7






更新Python


windows:













1



卸载重装即可





linux:

Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python













1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19



查看默认Python版本

python -V

  

1、安装gcc,用于编译Python源码

    yum install gcc

2、下载源码包,https://www.python.org/ftp/python/

3、解压并进入源码文件

4、编译安装

    ./configure

    make all

    make install

5、查看版本

    /usr/local/bin/python2.7 -V

6、修改默认Python版本

    mv /usr/bin/python /usr/bin/python2.6

    ln -/usr/local/bin/python2.7 /usr/bin/python

7、防止yum执行异常,修改yum使用的Python版本

    vi /usr/bin/yum

    将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6







五 python入门

5.1 第一句python代码

1. 解释器:即时调试代码,代码无法永久保存

2. 文件:永久保存代码


在D:\\python_test\\目录下新建文件hello.py,编写代码如下


print(‘hello world‘)

执行hello.py,即python D:\\python_test\\hello.py

python内部执行过程如下:

技术分享

 

上一步中执行python D:\\python_test\\hello.py时,明确的指出 hello.py 脚本由 python 解释器来执行。

在linux平台中如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:


#!/usr/bin/env python #该行只对linux有效
print(‘hello world‘)

 

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py


5.2 文件头


#!/usr/bin/env python

# -*- coding: utf-8 -*-

5.3 注释

当行注视:# 被注释内容

多行注释:""" 被注释内容 """


5.4 执行脚本传入参数

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:



  • Python内部提供的模块

  • 业内开源的模块

  • 程序员自己开发的模块

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数













1

2

3

4

5

6



#!/usr/bin/env python

# -*- coding: utf-8 -*-

  

import sys

  

print sys.argv





执行


C:\\Users\\Administrator>python D:\\python_test\\hello.py arg1 arg2 arg3
[‘D:\\\\python_test\\\\hello.py‘, ‘arg1‘, ‘arg2‘, ‘arg3‘]

 


5.5 了解pyc文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。


六 变量

6.1 为何要有变量

程序执行的本质就是一系列状态的变化,变量二字的核心一个是变,一个是量,‘变‘正好对应程序的变化,‘量‘即计量,反映的是某种状态,

比如一款游戏中的人物初始等级:level=1,过了一段时间后升级了:level=10


6.2 变量的声明与引用


#!/usr/bin/env python
name=‘egon‘ #变量的声明
name #通过变量名,引用变量的值
print(name) #引用并且打印变量名name对应的值,即‘egon‘


6.3 标识符命令规范:




    • 变量名只能是 字母、数字或下划线的任意组合

    • 变量名的第一个字符不能是数字

    • 以下关键字不能声明为变量名
      [‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]



6.4 变量的赋值


#!/usr/bin/env python
name1=‘lhf‘
name2=‘egon‘

技术分享


#!/usr/bin/env python
name1=‘lhf‘
name2=name1

 

技术分享

 

 



技术分享

#!/usr/bin/env python
#一个游戏人物的等级由1级升到2级
level=1
level=2
#一个游戏帐号的密码由‘123‘改成‘456‘
passwd=‘123‘
passwd=‘456‘
#一个人的名字有‘lhf‘改成‘egon‘
name=‘lhf‘
name=‘egon‘

技术分享


七 输入输出

python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input

1.res=input("python3: ")

2.res=raw_input("python2: ")

3.res=raw_input("python2: ")

1,2无论接收何种输入,都被存为字符串赋值给res,而3的意思是,用户输入何种类型,就以何种类型赋值给res


#!/usr/bin/env python
name=input(‘请输入用户名:‘)
print(name)

执行


C:\\Users\\Administrator>python D:\\python_test\\hello.py
请输入用户名:egon
egon

===============================================================================

输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:


#!/usr/bin/env python
import getpass
password=getpass.getpass(‘请输入密码:‘)
print(password)

执行(在pycharm中无法执行,需要到终端中执行)


C:\\Users\\Administrator>python D:\\python_test\\hello.py
请输入密码:
123456


八 简单的运算符

1、算数运算:


 技术分享

2、比较运算:

 技术分享

3、赋值运算:

技术分享 

4、位运算:

技术分享

注: ~  举例: ~5 = -6  解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110

按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了

5、逻辑运算:

 技术分享

and注解:



  1. 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。

  2. 在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。

  3. 如果布尔上下文中的某个值为假,则 and 返回第一个假值

or注解:



  1. 使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值

  2. 如果所有的值都为假,or 返回最后一个假值

  3. 注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

and-or结合使用:



  1. 结合了前面的两种语法,推理即可。

  2. 为加强程序可读性,最好与括号连用,例如:

    (1 and ‘x‘) or ‘y‘


6、成员运算:

技术分享 


 

7.身份运算

 

 技术分享

 

8.运算符优先级:自上而下,优先级从高到低

 

技术分享

 


九 流程控制

9.1 条件语句

1 单分支

2 多分支

需求一、用户登陆验证



技术分享

#!/usr/bin/env python
name=input(‘请输入用户名字:‘)
password=input(‘请输入密码:‘)
if name == ‘egon‘ and password == ‘123‘:
print(‘egon login success‘)
else:
print(‘用户名或密码错误‘)

技术分享

 

需求二、根据用户输入内容输出其权限



技术分享

#!/usr/bin/env python
#根据用户输入内容打印其权限
‘‘‘
egon --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
‘‘‘
name=input(‘请输入用户名字:‘)
if name == ‘egon‘:
print(‘超级管理员‘)
elif name == ‘tom‘:
print(‘普通管理员‘)
elif name == ‘jack‘ or name == ‘rain‘:
print(‘业务主管‘)
else:
print(‘普通用户‘)

技术分享


9.2 循环语句

while 循环

1、基本循环


while 条件:

# 循环体

# 如果条件为真,那么循环体则执行
# 如果条件为假,那么循环体不执行

 

2、break

break用于退出本层循环


while True:
print "123"
break
print "456"

 

3、continue

continue用于退出本次循环,继续下一次循环


while True:
print "123"
continue
print "456"

 

 


 















推荐阅读
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
author-avatar
ythg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有