Python基础一. 简介、变量、对象及引用
一、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基础一. 简介、变量、对象及引用的更多相关文章
- Python基础教程之List对象 转
Python基础教程之List对象 时间:2014-01-19 来源:服务器之家 投稿:root 1.PyListObject对象typedef struct { PyObjec ...
- 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字
『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...
- python基础语法(变量与数据类型)
python基础语法(变量与数据类型) 一.python变量 python中的变量不需要声明.每个变量在使用钱都需要赋值,变量赋值以后,该变量才会被创建 在python中,变量就是变量,它没有类型,我 ...
- python基础15 ---面像对象的程序设计
面向对象的程序设计 一.面向对象的程序设计简介 1.面向对象程序设计的由来. 我们之前虽然学习过了面向过程的程序,它的核心是面向过程,一步一步的设计好了的流程,虽然极大的降低了程序的复杂度,但是一个设 ...
- Python基础语法07--面向对象+正则表达式
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- Python基础0:变量 赋值 表达式和运算符
变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...
- 【笔记】Python基础一 :变量,控制结构,运算符及数据类型之数字,字符串,列表,元组,字典
一,开发语言介绍 高级语言:Java,C#,Python ==>产生字节码 低级语言:C,汇编 ==>产生机器码 高级语言开发效率高,低级语言运行效率 ...
- python基础之内置异常对象
前言 什么叫异常?简单来说就是程序运行发生了预计结果之外的情况从而导致程序无法正常运行.而python解释器将一些常见的异常情况在它发生时打包成一个异常对象,我们可以通过捕捉这些异常对象从而进行处理, ...
- Python基础学习之变量赋值
1.赋值操作符 Python语言中,等号(=)是主要的赋值操作符: >>> aInt=-100 >>> aString='this is a string' > ...
随机推荐
- 20145308刘昊阳 《Java程序设计》第4周学习总结
20145308刘昊阳 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 继承:面向对象中,为避免多个类间重复定义共同行为使用 把相同代码提升为父 ...
- CSS雪碧,即CSS Sprite 简单的例子
CSS Sprite生成工具 http://pan.baidu.com/s/1gdGQwiJ 工具可将多幅图片整合一张,并生成CSS. HTML代码 <style> .img{backgr ...
- 关于NSNotificationCenter消息通信用法
NSNotificationCenter主要用于广播消息到多个监听着,其传统用法 - (void)viewDidLoad { [super viewDidLoad]; [[NSNotification ...
- eclipse安装color theme插件
为Eclipse添加Color.Theme的插件 这样可以方便一键更换主题,再也不用一个一个设置BackgroundColor了,同时也方便回退到default默认主题配置. 方法一: 打开Eclip ...
- 51nod算法马拉松14
这次太丢人了只搞出来了A到D,那就将就写一写A到D... A 棋盘问题 脑筋急转弯题,不难发现每一次两个人只能染白奇数个格子,所以数数有奇数还是偶数个白格子就行了. #include<cstdi ...
- iOS 评论APP撰写评论
---- iOS 应用评分 UIAlertAction *alertAction1 = [UIAlertAction actionWithTitle:@"方式1 跳转到app商店" ...
- mysql 查看语句的执行效率
EXPLAIN 一.用途: 1.什么时候必须为表加入索引以得到一个使用索引找到记得的更快的select 2.知道优化器是否以一个最佳次序联结表. <官方的关于explain的文档在http:// ...
- Sortable Observable Collection in C#
Sorting outside the collection protected override void OnNavigatedTo(NavigationEventArgs e) { if (Se ...
- 如何用PHP开发机器人。
近段时间由于工作需要,需要写个QQ通知的功能,仔细百度了一下,发现了现有的码,现分享大家.特别应该注意的是腾讯公司并未提供过QQ直接通讯的API接口,不过很庆幸的是咋们还有个3g qq可以小小利用下, ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...