Python基础一

学习基础详查:html

https://www.cnblogs.com/alex3714/articles/5885096.htmljava

https://www.cnblogs.com/linhaifeng/articles/6384466.htmlpython

1.python是一门动态解释性的强类型定义语言。c++

2.Python能作什么程序员

  1. 网络应用:包括web网站 、服务器后台服务等,在这方面Python有优秀的web框架如Django\Tornado\Flask等,网络服务框架有著名的Twisted,异步通讯有牛X的eventlet.
  2. 科学运算:随着NumPy、SciPy、matplotlib、ETS等众多程序库的开发,Python愈来愈适合于作科学计算。与科学计算领域最流行的商业软件MATLAB相比,Python是一门真正的通用程序设计语言,比MATLAB所采用的脚本语言的应用范围更普遍,有更多程序库的支持,适用于Windows和Linux等多种平台,彻底免费而且开放源码。虽然MATLAB中的某些高级功能目前还没法替代,可是对于基础性、前瞻性的科研工做和应用系统的开发,彻底能够用Python来完成。
  3. GUI程序:python提供了多个图形开发界面的库,包括PyQt,WxPython,自带的有Tkinter,这些库容许Python程序员很方便的建立完整的、功能健全的GUI用户界面。
  4. 系统管理工具:Python能够是作运维人员最喜欢用的语言了,能够用它来轻松的开发自动化管理工具、监控程序等,事实上如今不少开源软件也都是用Python开发的,如用于IT配置管理的SaltStack\Ansible, 作虚拟化的OpenStack,作备份用的Bacula等。
  5. 其它程序:你知道吗?Python 用来写爬虫也是很拿手的,还有作游戏,还能够用来作嵌入式开发、作驱动程序等,总之,Python能作的事情仍是很是多的。

3.Python的优缺点web

先看优势算法

  1. Python的定位是“优雅”、“明确”、“简单”,因此Python程序看上去老是简单易懂,入门容易。
  2. 开发效率很是高,Python有很是强大的第三方库,基本上你想经过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大下降开发周期,避免重复造轮子。
  3. 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
  4. 可移植性————因为它的开源本质,Python已经被移植在许多平台上(通过改动使它可以工 做在不一样平台上)。若是你当心地避免使用依赖于系统的特性,那么你的全部Python程序无需修改就几乎能够在市场上全部的系统平台上运行
  5. 可扩展性————若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,你能够把你的部分程序用C或C++编写,而后在你的Python程序中使用它们。
  6. 可嵌入性————你能够把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

再看缺点:数组

  1. 速度慢,Python 的运行速度相比C语言确实慢不少,跟JAVA相比也要慢一些,所以这也是不少所谓的大牛不屑于使用Python的主要缘由,但其实这里所指的运行速度慢在大多数状况下用户是没法直接感知到的,必须借助测试工具才能体现出来,好比你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是很是夸张了,可是你是没法直接经过肉眼感知的,由于一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数状况下Python已经彻底能够知足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种状况下,固然仍是建议你用C去实现的。
  2. 代码不能加密,由于PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,若是你的项目要求源代码必须是加密的,那你一开始就不该该用Python来去实现。
  3. 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任什么时候刻仅有一个线程在执行,Python的线程是操做系统的原生线程。在Linux上为pthread,在Windows上为Win thread,彻底由操做系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即便在多核CPU平台上,因为GIL的存在,因此禁止多线程的并行执行。

Python安装 服务器

Python解释器网络

CPython

这个解释器是用C语言开发的,因此叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的全部代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所加强,可是执行Python代码的功能和CPython是彻底同样的。

PyPy

PyPy是另外一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),因此能够显著提升Python代码的执行速度。

绝大部分Python代码均可以在PyPy下运行,可是PyPy和CPython有一些是不一样的,这就致使相同的Python代码在两种解释器下执行可能会有不一样的结果。若是你的代码要放到PyPy下执行,就须要了解PyPy和CPython的不一样点

Jython

Jython是运行在Java平台上的Python解释器,能够直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython相似,只不过IronPython是运行在微软.Net平台上的Python解释器,能够直接把Python代码编译成.Net的字节码。

小结

Python的解释器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是经过网络调用来交互,确保各程序之间的独立性。

Python的变量及数据类型

Python的基本数据类型有5种: 整型(int), 浮点型(float), 字符型(string), 布尔型(bool),空值(None).

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,由于0是有意义的,而None是一个特殊的空值。 

变量和常量

变量命名规则

先介绍标识符的概念。和其余高级语言同样,用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。

Python语言和java,c++等不少语言同样,规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。 

注意:在Python中,大写字母和小写字母被认为是两个不一样的字符。所以,sum和SUM是两个不一样的变量名。通常地,变量名用小写字母表示,与人们平常习惯一致,以增长可读性。应注意变量名不能与Python的关键字、系统函数名和类名相同。 

变量名命名习惯

变量名的定义在能表达清楚它的做用的前提下最越简洁越好,能用一个单词表述清楚的尽可能就不要用两个。变量起名时通常有这么几种写法,你以为哪一种最简洁,你就选哪一种吧。

CheckCurrentConnCount

check_current_conn_count

checkCurrentConnCount

定义变量

了解了变量的概念和用途后,咱们一块儿来定义几个简单的变量看一下

name = ‘gangzi’  #name 是字符串,字符串要加上引号噢

age = 29  #age 是整数,整数不要加引号,加了引号后就变成字符串了

has_girlfriend = False  #是布尔值,通常用这个作逻辑判断,如if has_girlfriend:print ‘good for you !’

age = age + 1 #这个结果应该是30,运算流程是先将=号后面的age +1结果算出,而后再把这个结果重赋值给age, 因为age以前的值是29,从新赋值后,age值变为30.

最后,理解变量在计算机内存中的表示也很是重要。当咱们写:

_name = 'gangzi'

时,Python解释器干了两件事情:

  1. 在内存中建立一个”gangzi”的字符串;
  2. 在内存中建立了一个名为_name的变量,并把它指向”gangzi”的内存地址。 

常量

所谓常量就是不能变的变量。在Python中,一般用所有大写的变量名表示常量:

PI = 3.14159265359

但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,因此,用所有大写的变量名表示常量只是一个习惯上的用法。

数据运算符

python语言支持如下几种运算

算术运算

比较运算

Assignment Operators

二进制运算

关系运算

验证运算

Python的字符串

由于Python的诞生比Unicode标准发布的时间还要早,因此最先的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的。Python提供了ord()和chr()函数,能够把字母和对应的数字相互转换:

>>> ord('A') 65 >>> chr(65) 'A'

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示。

u''u'\u4e2d'是同样的,\u后面是十六进制的Unicode码。所以,u'A'u'\u0041'也是同样的。

两种字符串如何相互转换?字符串'xxx'虽然是ASCII编码,但也能够当作是UTF-8编码,而u'xxx'则只能是Unicode编码。

u'xxx'转换为UTF-8编码的'xxx'encode('utf-8')方法:

>>> u'ABC'.encode('utf-8') 'ABC' >>> u'中文'.encode('utf-8') '\xe4\xb8\xad\xe6\x96\x87'

英文字符转换后表示的UTF-8的值和Unicode值相等(但占用的存储空间不一样),而中文字符转换后1个Unicode字符将变为3个UTF-8字符,你看到的\xe4就是其中一个字节,由于它的值是228,没有对应的字母能够显示,因此以十六进制显示字节的数值。len()函数能够返回字符串的长度:

>>> len(u'ABC') 3 >>> len('ABC') 3 >>> len(u'中文') 2 >>> len('\xe4\xb8\xad\xe6\x96\x87') 6

反过来,把UTF-8编码表示的字符串'xxx'转换为Unicode字符串u'xxx'decode('utf-8')方法:

>>> 'abc'.decode('utf-8') u'abc' >>> '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') u'\u4e2d\u6587' >>> print ('\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))中文

因为Python源代码也是一个文本文件,因此,当你的源代码中包含中文的时候,在保存源代码时,就须要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,咱们一般在文件开头写上这两行:

#!/usr/bin/env python 
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,不然,你在源代码中写的中文输出可能会有乱码。

格式化

最后一个常见的问题是如何输出格式化的字符串。咱们常常会输出相似'亲爱的xxx你好!你xx月的话费是xx,余额是xx'之类的字符串,而xxx的内容都是根据变量变化的,因此,须要一种简便的格式化字符串的方式。

 

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例以下:

>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'

你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。若是只有一个%?,括号能够省略。

常见的占位符有:%d 整数 %f 浮点数 %s 字符串 %x 十六进制整数

其中,格式化整数和浮点数还能够指定是否补0和整数与小数的位数:

>>> '%2d-%02d' % (3, 1) ' 3-01' >>> '%.2f' % 3.1415926 '3.14'

若是你不太肯定应该用什么,%s永远起做用,它会把任何数据类型转换为字符串:

>>> 'Age: %s. Gender: %s' % (25, True) 'Age: 25. Gender: True'

对于Unicode字符串,用法彻底同样,但最好确保替换的字符串也是Unicode字符串:

>>> u'Hi, %s' % u'Michael' u'Hi, Michael'

有些时候,字符串里面的%是一个普通字符怎么办?这个时候就须要转义,用%%来表示一个%

>>> 'growth rate: %d %%' % 7 'growth rate: 7 %'

小结

因为历史遗留问题,Python 2.x版本虽然支持Unicode,但在语法上须要'xxx'u'xxx'两种字符串表示方式。

Python固然也支持其余编码方式,好比把Unicode编码成GB2312:

>>> u'中文'.encode('gb2312') '\xd6\xd0\xce\xc4'

但这种方式纯属自找麻烦,若是没有特殊业务要求,请牢记仅使用Unicode和UTF-8这两种编码方式。

在Python 3.x版本中,把'xxx'u'xxx'统一成Unicode编码,即写不写前缀u都是同样的,而以字节形式表示的字符串则必须加上b前缀:b'xxx'

格式化字符串的时候,能够用Python的交互式命令行测试,方便快捷。


   

引用1:  http://www.cnblogs.com/dzhanjie/archive/2011/07/07/2100340.html

引用2:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738264643de15c5c4abad47dd9510e3b86286acb8000

引用3:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000

引用4:https://www.cnblogs.com/alex3714/articles/5885096.html

相关文章
相关标签/搜索