码迷,mamicode.com
首页 > 编程语言 > 详细

python基础一

时间:2018-06-05 21:21:56      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:env   code   tab   一段   脚本   引用   中文   IV   doc   

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

一、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的对应关系和执行流程如下:

二、python的安装

 安装Python

1、下载安装包
    https://www.python.org/downloads/
2、安装
    默认安装路径:C:\python27
3、配置环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
    如:原来的值;C:\python27,切记前面有分号

linux:

无需安装,原装Python环境
  
ps:如果自带2.6,请更新至2.7

更新Python

windows: 卸载重新安装

linux:

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

查看默认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 -s /usr/local/bin/python2.7 /usr/bin/python
7、防止yum执行异常,修改yum使用的Python版本
    vi /usr/bin/yum
    将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

三、python的运行

(一)python解释器简介

解释器就是一种让其他的程序运行起来的一种程序,是代码和机器硬件之间的软件逻辑层。

安装好python后包含了一些最小化的组件:一个解释器和支持的库

(二)程序的执行

技术分享图片  

(三)、如何运行程序

交互提示下运行代码

在交互模式下,输入代码的结果将会在按下回车后在>>>这一行之后显示。

为什么使用交互提示模式?

1、实验

由于代码是立即执行的,当对一段代码在运行有疑问的时候,打开交互命令行并实验代码,看看和预想的是否一样。

2、测试

可以交互地导入模块文件,并且在交互提示模式中输入命令从而在它们定义的工具上运行测试。

import os
os.getcwd()
c:\\python30

使用交互式模式需要注意的地方:

1、只能够输入python命令,不要输入系统的命令;

2、不需要在交互模式下输入完整的打印语句print(),但是文件中打印语句是必须的;

3、留意提示符的变换和复合语句,当在交互模式下输入两行或多行的复合语句时,提示式会发生变化,注意语法的缩进;

5、连续的回车结束复合语句;

6、一次运行一条语句。

系统命令行和文件执行和编写代码

为了能够永久的保存程序,需要在文件中写入代码,这样的文件通常叫做模块。模块是一个包含了python语句的简单文本文件,可以让python解释器多次运行和导入这样的文件中的语句,并且可以以多种方式云运行。

技术分享图片

命令行运行文件:

1、windows

首先要将python加入到系统的环境变量中或者直接使用程序的路径+文件保存路径运行

2、linux/unix

文件头:

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

env可以通过系统PATH环境变量中罗列出的目录,定位python解释器,这种方法可以使代码更具有可移植性。

文件权限:

chmod u+x 给予文件可执行的权限。

字符编码:

支持中文的第一张表就叫 GB2312

1980 gb2312 6700+

1995 gbk1.0 20000

2000 gb18030 27000

big5 台湾

unicode 万国码 支持所有国家和地区的编码

2**16 = 65535 = 存一个字符 统一占用2个字节

UTF-8 = unicode 的扩展集,可变长的字符编码集

Assic -->Gb2312 ->gbk1.0-->gb18030 Assic -->unicode -->utf-8 /utf-16

Python2.x == Assic 默认编码 #!-*- coding:utf-8 -*- #coding:utf-8

python3.x == unicode默认编码 unicode 是向下兼容gb2312 , gbk

缩进:

IndentationError: expected an indented block ^

IndentationError: unindent does not match any outer indentation level

SyntaxError: invalid syntax 语法错误

tab != 4个空格 windos的原生tab和linux的tab是不一样的,缩进级别必须保持一致

python官方建议用4个空格,可以用一个tab代替4个空格。

注释:

#注释可以自成一行,也可以放置在代码行的右边,#符号后的文本直接作为供人阅读的注释而忽略,并且不会被看做是语句的语法的一部分。

"""被注释的内容"""   ‘‘‘ 被注释的内容‘‘‘ 可以为多行进行注释。

模块的导入和重载

 简单来讲每一个以扩展名py结尾的python源代码都是一个模块,其他的文件可以通过导入一个模块读取这个模块的内容。一个模块的内容通过这样的属性,能够被外部使用。

 三、一些基础知识

(一)寻求帮助

1、调用内置的dir函数

调用内置的dir函数,将会返回一个列表,其他包含了对象的所有属性,由于方法是函数属性,它们也会在这个列表中出现。

一般来说,以双下划线开头并结尾的变量名是用来表示python实现细节的命名模式,在这个列表中没有下划线的属性是对象能够调用的方法。

 >>> s = spa
 >>> dir(s)
[__add__, __class__, __contains__, __delattr__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, 
__getnewargs__, __gt__, __hash__, __init__, __iter__, __le__, __len__, __lt__, __mod__, __mul__, __ne__, __new__, __reduce__,
__reduce_ex__, __repr__, __rmod__, __rmul__, __setattr__, __sizeof__, __str__, __subclasshook__, capitalize, casefold, center,
count, encode, endswith, expandtabs, find, format, format_map, index, isalnum, isalpha, isdecimal, isdigit, isidentifier, islower,
isnumeric, isprintable, isspace, istitle, isupper, join, ljust, lower, lstrip, maketrans, partition, replace, rfind, rindex,
rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill]

2、调用help函数

dir函数简单地给出了方法的名称,要查询它们是做什么的,可以传递给help函数。

help(s.upper)
Help on built-in function upper:
upper(...) method of builtins.str instance
    S.upper() -> str
    Return a copy of S converted to uppercase.

(二)变量、对象和引用

如果给输出的内容起个简单的别名。这样我们用简短的别名来代替长内容,下次要输出的时候就直接使用别名来使用原来的长内容。

1、变量创建

当代码第一次给它赋值时就创建了,不需要声明。

2、变量的类型

变量永远不会有任何和它关联的类型信息或约束,它只是在一个特定的时间,简单的引用了一个特定的对象而已。类型属于对象,而不是变量。

3、变量的使用

当变量出题在表达式中时,它会马上被当前引用的对象所代替,这个对象是什么类型,所有的变量必须在其使用前明确的赋值,使用未赋值的变量会报错。

4、命名规则:

(1) 字母数字下划线组成

(2) 不能以数字开头,不能含有特殊字符和空格

(3)不能以保留字命名

(4) 不能以中文命名

(5)定义的变量名应该有意义

(6) 驼峰式命、 下划线分割单词

(7) 变量名区分大小写

5、常量 

不变的量 pie = 3.141592653.... 在py里面所有的变量都是可变的 ,所以用全部大写的变量名来代表此变量为常量

name1 = "SuperMan"
name2 = name1
name1 = "BatMan"
print(name1,name2)  # 这里输出的name1和name2的内容分别是什么?
BatMan,SuperMan 

技术分享图片

变量name1是对象"SuperMan"在内存空间的一个引用(指针)

变量是一个系统表的元素,拥有指向对象的连接的空间

对象是分配的一块内存,有足够的空间云表示它们所代表的值

引用是自动形成的从变量到对象的指针

实现过程:

程序是运行在内存中的,我们执行 name1=“SuperMan”时,这是在内存中哦嗯开辟了一块空间,并将这块空间的内存地址赋值给name1; 在执行name2=name1的时候,将name1中的内存复制给name2,也就是说,name2中的内存地址也是存储“SuperMan”的内存空间的内存地址; 在执行name1= “BatMan”,此时在内存中另外在开辟一块空间存储“BatMan”,将存储“BatMan”的内存空间的地址赋值给name1,。所以在最后执行 print(name1,name2)的时候,就会出现你看到的结果。 

6、内存何时释放?

在python中每当一个变量名被赋予了一个新的对象,之前的那个对象所占用的空间就会被回收(如果没有被其他的变量名或对象所引用的话),这种自动回收对象空间的技术叫做垃圾收集。

7、共享引用

>>> a = 3
>>> b = 3
>>> print(a,b)
3 3

b也是对象3的一个引用 ,实际效果就是变量a和b都引用了相同的对象,指向了相同的内存空间,在python中叫做共享引用,多个变量名引用了同一个对象。

>>> a = 3
>>> b = a
>>> a = spam
>>> a, b
(spam, 3)

创建了一个新的对象,字符串‘spam‘并设置a对这个新的对象进行引用,这并不会改变b的值,b仍然引用原始的对象-整数3

>>> a = 3
>>> b = a
>>> a = a + 2
>>> a,b
(5, 3)

事实上,是没有办法改变对象3的值,整数是不可变的,没有方法在原处修改它。

8、共享引用在原处修改

 对于像列表这样支持在原处修改的对象,共享引用时需要加倍小心,因为对一个变量斪修改会影响其他的变量

>>> l1 = [2, 3, 4]
>>> l2 = l1
>>> l1[0] = 24
>>> l1
[24, 3, 4]
>>> l2
[24, 3, 4]

9、共享引用和相等

>>> l = [1, 2, 3]
>>> m = l
>>> l == m
True
>>> l is m
True
>>> l = [1, 2, 3]
>>> m = [1, 2, 3]
>>> l == m
True
>>> l is m
False

技术分享图片

python缓存会复用小的整数和小的字符串,不会被回收,相反的,它将可能仍被保存在一个系统表中,等待下一次来重复利用。

 >>> a = spam
>>> b = spam
>>> a == b
True
>>> a is b
True

(三)对象类型的分类

1、同样分类的对象类型可以共享其操作集合

数字:(包括整数、浮点数、二进制、分数等)都可以支持加法和乘法等运算

序列:(包括字符串、列表、元组)都可以支持索引、分片和合并等操作

映射(字典)通过键的索引

2、可变类型能够在原处修改的

不可变的类型(数字、字符串、元组、不可变的集合)可以运行表达式来创建新的对象并将其结果重新分配给最被的变量。

可变的类型(列表、字典、可变集合)支持原处直接修改

(四)三元运算

result = 值1 if 条件 else 值2

如果条件为真:result = 值1
如果条件为假:result = 值2

python基础一

标签:env   code   tab   一段   脚本   引用   中文   IV   doc   

原文地址:https://www.cnblogs.com/mjc69213/p/9141683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!