Python的简介

Python与其他语言的对比:

  C和Python、Java、C#

    C语言:代码直接编译成了机器码,在处理器上直接执行

    Python、Java、C#:编译得到相应的字节码,虚拟机执行字节码并转换成机器码再在处理器上执行。

  Python和C       补充:Python是由C开发而来

    对于使用:Python的类库齐全且使用简洁,Python 10行实现的代码,别的语言需要数十行

    对于速度:C语言直接编译成机器码,速度远远大于Python

  Python和C#、Java

    对于使用:Linux原装Python,而其他的没有

    对于速度:Python在执行效率上稍逊一筹

Python的种类:

  Cpython

    python的官方版本,使用C语言编写,使用广泛,Cpython会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在python虚拟机上

  Jython

    Python的java实现,会将Python代码动态编译成java字节码,运行在jvm上

  Iron Python

    Python的C#实现,IronPython会将Python代码编译成C#字节码,运行在CLR上。

  PyPy

    它的目的使执行速度,采用JIT技术,对Python代码进行一个动态的编译,在Python的基础上对Python的字节码进一步处理,从而提升执行速度

  IPython

    居于CPython之上的一个交互式的编译器,内核其实是调用了IE

Python的环境

1.安装Python

Windows:安装包,配置环境变量

Linux:自带有Python环境

2.更新Python

Windows:卸载重装即可

Linux: 

 查看默认Python版本
python -V 、安装gcc,用于编译Python源码
yum install gcc
、下载源码包,https://www.python.org/ftp/python/
、解压并进入源码文件
、编译安装
./configure
make all
make install
、查看版本
/usr/local/bin/python2. -V
、修改默认Python版本
mv /usr/bin/python /usr/bin/python2.
ln -s /usr/local/bin/python2. /usr/bin/python
、防止yum执行异常,修改yum使用的Python版本
vi /usr/bin/yum
将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.

Python入门

一:你好,Python

 .创建一个.py文件
.输入
  print("Hello Python")
.保存退出

打开CMD,通过以下方式执行Python文件(已经配置好了环境变量)

  python .py文件

补充一点:

python2中可以使用:

print "Hello Python"

而Python3不行

二:解释器

以上执行时,python 就是指定了这个py文件是要由python解释器来执行的

在Linux中,如果想要想shell脚本一样执行python脚本,就需要加入一些头部信息

 #!/usr/bin/env python
#其实就是Python解释器的具体路径,也就是在这里指定了python解释器 print("Hello World")

三:编码

在python2中如果你的代码中存在中文,而且没有指定编码,则会报错

Python2解释器在加载py文件的时候,会对内容进行默认的编码(ascii),ASCII是不支持中文的

所以我们要使用UTF-8编码:

 #!/usr/bin/env python
# -*- coding:utf- -*- print("你好,Python")

另外说一点:python3好像是默认编码为unicode,所以不需要担心中文问题

四:Python代码的注释

  单行注释  # 注释的内容

  多行注释 ”“” 注释的内容 “”“

五:执行Python时传入参数

Python有大量的模块,从而使得Python的开发非常的方便简洁。类模块有三种:

  • Python内部提供的模块
  • 开源的一些模块
  • 自己开发的模块

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

 import sys

 print(sys.argv)

六:pyc文件

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

同时,如果再次调用这个.py文件,当它发现有pyc文件时,就会去调用这个pyc文件,而非源py文件,所以说,Python的模块本身就是单例

七:变量

1.声明变量

 name  = "nullnull"

最简单的一个声明变量,变量名为name,变量name的值为”nullnull“

一个名为name的变量名指向了一个存着值为”nullnull“的内存空间

另外提一点:其实变量名是可以使用中文的,但是开发中没有人会这么做。

2.变量的定义规则:

  • 变量名字母、数字或下划线的组合
  • 变量名的第一个字符不能是数字
  • 一些Python内置的关键字不能作为变量名

另外提一点:有个叫做PEP8的对Python编码进行了统一的规范

3.变量的赋值

 name1 = "nullnull"
name2 = "fullfull"

name1 = "nullnull"
name2 = name1

这也说明了python的引用类型,这里你可以先不用了解。

八:输入

#python2
name1 = raw_input("请输入你的...") #Python3
name2 = input("请输入你的...")

另外补充一点:如果你输入的是密码,想要想Linux一样输入时不可见就要用到getpass模块

 import getpass

 pwd = getpass.getpass("请输入密码:")

 print(pwd)

九:流程控制和代码的缩进

流程控制语句:

  if...elif....else

  for循环

  while....break/continue

if else语句判断语句

 if True:
print("这是真的")
else:
print("虽然他永远不会执行吧")

if elif elif    多条件判断语句

while循环语句

 while True:
print("如果真的就会执行啦,根本停不下来")

for循环

 for i in ['','','']
print("这里是列表中的每一个元素啦" + i)

break 用于while或for的代码块中,用于跳出循环

continue类似于break,但却是跳过本次循环

我的Python升级打怪之路【一】:python的简单认识的更多相关文章

  1. 我的Python升级打怪之路【七】:网络编程

    Socket网络套接字 socket通常也称为"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字“向网络发出请求或者应答网络请求. socket起源于 ...

  2. 我的Python升级打怪之路【六】:面向对象(二)

    面向对象的一些相关知识点 一.isinstance(obj,cls) 检查实例obj是否是类cls的对象 class Foo(object): pass obj = Foo() isinstance( ...

  3. 我的Python升级打怪之路【六】:面向对象(一)

    面向对象的概述 面向过程:根据业务逻辑从上到下写代码 函数式:将其功能代码封装到函数中,日后便无需编写,仅仅调用即可 [执行函数] 面向对象:对函数进行分类和封装.[创建对象]==>[通过对象执 ...

  4. 我的Python升级打怪之路【五】:Python模块

    模块,是一些代码实现了某个功能的集合 模块的分类: 自定义模块 第三方模块 内置模块 导入模块 import module from module.xx.xx import xx from modul ...

  5. 我的Python升级打怪之路【四】:Python之前的一些补充

    字符串的格式化 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择的值有: ...

  6. 我的Python升级打怪之路【三】:Python函数

    函数 在函数之前,我们一直遵循者:面向过程编程,即:根据业务逻辑从上到下实现功能,开发过程中最常见的就是粘贴复制.代码就没有重复利用率. 例如:有好多的重复的代码 if 条件: 发送指令 接收结果 e ...

  7. 我的Python升级打怪之路【二】:Python的基本数据类型及操作

    基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数是32位,取值范围是-2**31~2--31-1 在64位系统上,整数的位数是64位,取值范围是-2**63~2**63-1 clas ...

  8. gitlab 迁移、升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5

    gitlab 迁移.升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5 gitlab 数据 ...

  9. Python的自学之路:Python基础(一)

    声明:我写博客不是为了什么,只是为了记录自己的学习状态,学过的知识点!方便以后进行好的复习!python小白,勿喷 python环境的搭建,在这里就不细说了,这里有我的链接,可以参考一下:https: ...

随机推荐

  1. access函数使用

    调用open函数时,是以有效用户而不是实际用户的身份去验证进程对要打开的文件的读写权限.但是有时候我们想知道的是实际用户而非有效用户对某一文件的权限,此时就要用到access函数.   函数原型:in ...

  2. 使用 JAVA 中的动态代理实现数据库连接池

    数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈.我们可以在互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共 ...

  3. delphi 中封装的VCl窗体Tab键响应问题

    在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab键的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab键按下的消息.基本顺序是这样的: 1. 主窗体用Hook技术捕获Ta ...

  4. Windowsform datagridview选中向父窗口传值

    Datagridview mouseclick事件 private void dataGridView1_MouseClick(object sender, MouseEventArgs e) { i ...

  5. C#串口数据互通小程序

    主要功能: 所编写的程序需将串口1.串口2数据互通,即:串口1接收到数据的同时将数据通过串口2发出,串口2接收到数据的同时将数据通过串口1发出. 并根据需要由指定串口发送或获取数据. 代码如下: us ...

  6. .net core 高性能对象映射

    关于对象转换已经有不少轮子(AutoMapper,TinyMapper) .出于项目需要,手动造一个简单轮子.先贴代码 1.采用静态泛型类缓存,避免了拆箱装箱操作. 2.对于转换对象中有,字段名一样但 ...

  7. NVIDIA GTC照片

    这次的NVIDIA GPU Technology Conference 2014在美国San Jose(就是俗称的硅谷了)举办. 去美国的飞机上10个小时反正是睡不着,电影还是挺好看的. 美联航的早餐 ...

  8. 理解图像Garbor和HOG特征的提取方法及实例应用

    前言:今天接触到了这两个特征,看了课本和博客后很蒙蔽,没有理解这两个特征,本篇博客的目的是只是参考其他的博客总结这两个特征,如果未来能研究和工作领域是这方面的话再回来自己研学,如有错误也欢迎指出. G ...

  9. BAT机器学习面试1000题系列(41-45题)

    41.线性分类器与非线性分类器的区别以及优劣 如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是.常见的线性分类器有:LR,贝叶斯分类,单层感知机.线性回归常见的非线性分类器: ...

  10. kali linux之Meterpreter

    高级,动态,可扩展的payload 基于meterpreter上下文利用更多漏洞发起攻击,后渗透阶段一站式操作界面 完全基于内存的dll注入式payload(不写硬盘) 注入合法系统进程并建立stag ...