一、Python简介

Python是一门计算机编程语言,它是由荷兰人Guido van Rossum在1989年圣诞节期间为了打发无聊的圣诞节而编写的,作为ABC语言的继承

特性:

  • 面向对象、解释型、动态、高级的计算机编程语言,官方定义其是优雅、明确、简单.
  • 开源免费、跨平台、移植性,可以在各种系统上使用
  • 说是容易上手、简单易学、功能强大.
  • 涵盖各种功能的标准库、第三方库.  batteries included (称为内置电池)
  • 让开发者把精力放在解决问题上,而不用太关心底层

应用:

Python近些年在国内很火,一般用来做的事:自动化运维、自动化测试、数据分析、爬虫开发、运维脚本、Web 开发等. 国内有知乎、豆瓣等都大量的应用了python开发,反正很多人都在学,都在搞

Python的类型:

  • cpython, C语言实现的python,默认的解释器
  • Jpython, Java实现的python
  • ipython
  • PyPy, 比较特殊,是python实现的python解释器
  • Rubypthon\ipython...   等等

二、开始Python

1、安装、环境

python可以跨平台,可以在win和linux系统上安装,python目前有2.x和3.x版本,2是主流的使用版本,3是趋势

  • windows平台安装,从官网下载版本,基本上就是下一步
  • linux平台安装
tar xf Python-2.7.11.tgz             # 解压、编译安装
cd Python-2.7.11
./configure --prefix=/usr/local/
make -j2 && make install
mv /usr/bin/python /usr/bin/python2.6.6                # 重命名系统默认的python
ln -s /usr/local/bin/python  /usr/bin/python           # 创建软连接作为系统新的python版本
vim /usr/bin/yum                               # 修改python为python2.6,防止yum使用异常

# python                                           # 查看python版本
Python 2.7.11 (default, Dec 17 2015, 01:08:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

为了方便,添加tab自动补全

vim ~/.pythonstartup     # 添加如下
#!/usr/bin/python
import sys
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
    readline.read_history_file(histfile)
except IOError:
    pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter

添加到~/.bashrc

echo 'export PYTHONSTARTUP=~/.pythonstartup'  >> ~/.bashrc
source ~/.bashrc

测试

[root@python ~]# python
Python 2.7.11 (default, Mar 29 2016, 23:35:44)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.t                            # tab可以补全
os.tcgetpgrp(  os.tcsetpgrp(  os.tempnam(    os.times(      os.tmpfile(    os.tmpnam(     os.ttyname(    

2、彩蛋

>>> import this
The Zen of Python, by Tim Peters<br>
Beautiful is better than ugly.                  # 美丽比丑陋好
Explicit is better than implicit.               # 显示比隐式好
Simple is better than complex.                  # 简单比复杂好
Complex is better than complicated.             # 复杂比更复杂好
Flat is better than nested.                     # 扁平比嵌套好
Sparse is better than dense.                    # 分开比密集好
Readability counts.                             # 可读性很重要
Special cases aren't special enough to break the rules.               # 即使特殊情况也不要打破规则
Although practicality beats purity.
Errors should never pass silently.                                    # 错误不能默默地通过( 精准的捕获异常)
Unless explicitly silenced.                                           # 除非明确要这样做
In the face of ambiguity, refuse the temptation to guess.             # 面对歧义,不要去猜测(去试)
There should be one-- and preferably only one --obvious way to do it. # 应该有一个而且是最好的方法
Although that way may not be obvious at first unless you're Dutch.    # 虽然这并不容易
Now is better than never.                                             # 现在开始做比从来不做好,做之前想清楚
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.            # 如果代码很难解释,不好
If the implementation is easy to explain, it may be a good idea.      # 如果代码很容易解释,好
Namespaces are one honking great idea -- let's do more of those!      # 命名空间是个极好的想法,应该提倡

3、简单代码

>>> print 'hello word'
hello word

当计算器用,跟数学运算一模一样

>>> 1 + 10
11
>>> 10 -1
9
>>> 1 * 2
2
>>> 2 * 1
2
>>> 2 / 2
1
>>> (2+3) * 4
20

当然可以把代码写在写到文件中执行,以.py作为文件的后缀

#!/usr/bin/env python
#coding:utf8               # 指定内容编码
print 'hello,word'
print 1 + 10
print 10 -1
print 2 * 2
print 2 / 2
print (2+3) * 4

4、代码执行过程

从上往下执行,代码读到内存---> 由解释器---> 词法分析 ---> 语法分析 ---> 字节码 ---> pvm

5、注释

  • #, 后面的代码将被忽略
  • ''' ''' 或 """ """     代码将被忽略,一般用来做注释
  • 空行或空格, 将被解释器忽略
#print 'hello,word' # 代码被忽略
'''print 1 + 10'''  # 代码被注释
"""print 1+1"""     # 代码被注释

6、语法规则

强制缩进,以缩进、冒号确定代码的归属、边界,Python会自动检查,好处就是代码看起来风格统一,习惯就好

缩进错误

>>>  print 'Hello,python!'               # 多了个空格,缩进错误
  File "<stdin>", line 1
    print 'Hello,python!'
    ^
IndentationError: unexpected indent

语法错误

#coding:utf8

if True:
    print 'True'
else                                    # 少了:号,语法错误
    print 'False'

结果:
 File "test.py", line 10
    else
       ^
SyntaxError: invalid syntax

三、变量、对象、引用

变量, 可以随时变化的量. 变量是用来保存内存中对象,特定的时间引用特定对象. 与变量对应的还有常量.

1、变量标识符

  • 一切确对象,对象有属性和方法
  • 变量名可以是大小写字母、数字、下划线组成且第一个字符不能为数字
  • 变量名(左侧) = 对象(右侧), 只有对象被创建,变量才能被引用(先右后左)
  • 变量不要和python内部保留标识符冲突
  • 变量在初次赋值时创建,后面赋值将覆盖变量的值
  • 尽量使用有意义、清晰易懂的变量名
>>> var1 = 100                # 定义一个int类型的对象100赋给变量var1
>>> var2 = 'string'           # 定义一个str类型的对象'string'赋给变量var2
>>> var1
100
>>> var2
'string'

过程: 先在内存中创建对象100和string,然后变量指向这些对象,变量与对象之间建立引用关系

>>> id(var1),id(var2)
(25917344, 140258567970032)

可以通过id函数查看对象的内存地址引用

2、变量赋值的方式

基本赋值、序列赋值、链式赋值、增强型赋值、多变量赋值

  • 基本赋值
var1 = 200
var2 = 'strings'
  • 链式赋值(共享引用、复用)
var = var1 = var2 = 'zhang'
id(name),id(name1),id(name2)              # 通过id命令可以发现引用同一对象
(139847989733872, 139847989733872, 139847989733872)

是将字符串对象‘zhang’赋值给var2,var1,var,是对象的共享引用(复用)

  • 序列赋值,通过位置对应,其实就是解包(unpack)
>>> a,b,c,d = 'abcd'
>>> a,b,c,d
('a', 'b', 'c', 'd')
  • 增强型赋值
a += 1        # 等同于 a = a + 1
a -= 1        # 等同于 a = a - 1
a *= 2        # 等同于 a = a * 2
  • 多变量赋值,解包
user1,user2 = 'zhang','li'
>>> user1,user2
('zhang', 'li')
  • 交换位置,不用temp中间值
>>> a,b=1,2
>>> a,b
(1, 2)
>>> a,b=b,a
>>> a,b
(2, 1)

深入:

  • 变量到对象连接关系叫引用,更像是指针
  • 左侧可以是变量名或者对象元素,右侧可以是对象或得到对象的表达式(先右后左)
  • 类型属性对象,而不是变量。变量到对象的连接只是指向关系
  • 共享引用, a = 1;b=a;a=2, b=?,注意共享引用
  • 垃圾回收, 引用计数, a=1;a=2, 对象1会不会立即被删除?
  • 主要解包(unpack),通过位置对应

四、总结

  • python特性,种类,语法规则
  • 变量的定义及规则、赋值的方式、深入

Python基础一. 简介、变量、对象及引用的更多相关文章

  1. Python基础教程之List对象 转

    Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root   1.PyListObject对象typedef struct {    PyObjec ...

  2. 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字

    『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...

  3. python基础语法(变量与数据类型)

    python基础语法(变量与数据类型) 一.python变量 python中的变量不需要声明.每个变量在使用钱都需要赋值,变量赋值以后,该变量才会被创建 在python中,变量就是变量,它没有类型,我 ...

  4. python基础15 ---面像对象的程序设计

    面向对象的程序设计 一.面向对象的程序设计简介 1.面向对象程序设计的由来. 我们之前虽然学习过了面向过程的程序,它的核心是面向过程,一步一步的设计好了的流程,虽然极大的降低了程序的复杂度,但是一个设 ...

  5. Python基础语法07--面向对象+正则表达式

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

  6. Python基础0:变量 赋值 表达式和运算符

    变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...

  7. 【笔记】Python基础一 :变量,控制结构,运算符及数据类型之数字,字符串,列表,元组,字典

    一,开发语言介绍 高级语言:Java,C#,Python  ==>产生字节码 低级语言:C,汇编                   ==>产生机器码 高级语言开发效率高,低级语言运行效率 ...

  8. python基础之内置异常对象

    前言 什么叫异常?简单来说就是程序运行发生了预计结果之外的情况从而导致程序无法正常运行.而python解释器将一些常见的异常情况在它发生时打包成一个异常对象,我们可以通过捕捉这些异常对象从而进行处理, ...

  9. Python基础学习之变量赋值

    1.赋值操作符 Python语言中,等号(=)是主要的赋值操作符: >>> aInt=-100 >>> aString='this is a string' > ...

随机推荐

  1. 双核CPU,跑程序会报rcu_sched_state detected stalls on CPUs/tasks 错误

    有一份SDK,之前跑在PPC405EX上没问题。最近换平台,CPU使用了PowerPC的P1020,双核。linux版本也升级到了3.0.48版本。升级之后出现了一个问题:SDK里面的程序跑一段时间之 ...

  2. U盘分区之后如何恢复

    操作步骤: 1.插入U盘. 2.按windows键,右键点击“运行”,再左键点击以管理员身份运行. 3.输入diskpart,按enter. 4.输入list disk,按enter. 5.之后会看到 ...

  3. 用virtualenv管理python3运行环境

    1. 简介 virtualenv可以用来管理互不干扰的独立python虚拟环境,在有些场景下非常有用,例如: 你有两个python项目,一个是python2.7的,另一个是python3的,可以创建两 ...

  4. poj1611 带权并查集

    题意:病毒蔓延,现在有 n 个人,其中 0 号被认为可能感染,然后给出多个社交圈,如果某个社交圈里有人被认为可能被感染,那么所有这个社交圈里的人都被认为可能被感染,现在问有多少人可能被感染. 带权并查 ...

  5. cvc-complex-type.2.4.a: Invalid content was found starting with element

    在写xml的时候又一次总是报cvc-complex-type.2.4.a: Invalid content was found starting with element 错误,还出现小红叉,在网上找 ...

  6. java数据安全(一)

    在java开发中,常常需要考虑数据安全问题,然不仅仅需要考虑数据存储的安全,还需要考虑数据的传输安全.自从有了数据安全问题后,密码学也就出来了.了解数据安全,首先需要了解密码学 1.什么是密码学 密码 ...

  7. C#高性能TCP服务

    C#高性能TCP服务 哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!& ...

  8. jquery选中checkbox多选项并添加到文本框中

    <script> function check(){ var dd = ""; if($("input[type='checkbox'][name='moke ...

  9. Apache不能启动解决办法

    这是我这两天频繁遇到的问题.Apache服务器还真是问题少年!任何点改动都可能导致它无法使用. 原因一:80端口占用例如IIS,另外就是迅雷.我的apache服务器就是被迅雷害得无法启用! 原因二:软 ...

  10. 【技术干货】听阿里云CDN安防技术专家金九讲tengine+lua开发

    一.介绍 二.安装 三.运行 四.开发 1.介绍 Tengine:轻量级.高性能.高并发.配置化.模块化.可扩展.可移植的Web和反向代理 服务器,Tengine是nginx超集,但做了很多优化,包含 ...