python基础与基本数据类型

########python#########

 

一.Python背景介绍

1.什么是python?

python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。

 

2.python的简史

1989,Guido(龟叔)ABC 语言写的一个插件。因Monty Python的喜剧团体的原因,故给这个语言起名为pythonlinux也是

1989年诞生的,1991年正式发布linux1.0内核;

1990, 发布python的第一个版本;

2001年发布python2.0版本;

2010年获年度Tiobe编程语言大奖,TIOBE网站;

TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经

验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 GoogleMSNYahoo!

WikipediaYouTube 以及 Baidu )进行计算。请注意这个排行榜只是反映某个编程语言的热门程度,

不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

2013年发布python3.x版本;

 

3.python为什么这么火?

早期的国外互联网公司很多网站就是用python开发,google中国将python编程带到中国,后面有豆瓣网站Youtube,雅虎,

google(现在主推Go语言),NASApython编程,2010年之后,移动互联网的兴起,项目开发周期短的语言越来越火,在运维

,有很多优秀的第三方库,便于开发,移植性很强。

 

4.python的优点

创始人评价:简单、优雅、明确

简单体现在如果你的母语是英语,python脚本就像写文章,很简单;

优雅体现在python的格式,比如缩进来确定代码块,可避免编程人员进行复杂的嵌套;

明确体现在解决问题的方法只有一种最优选项,perl语言是每个问题有很多最优解,但不利于团队协作;

有强大的第三方库模块,需要实现一复杂功能,只需要调用现有的库,可快速实现功能。20多年的发展,各种库都已经完

,比如:邮件库,爬虫库......

可跨平台移植,javaJava的虚拟机,python同样;

是一种面向对象的语言;

是一种可扩展的语言(C,C++,Java结合)

 

5.python的缺点

代码执行速度慢,相比C语言,不过现在python的异步并发框架导致执行速度慢;

python是开源的编程语言,代码不能加密,当然有相应的工具可以将python代码转换为exe的二进制可执行码,但是反解码也

很容易;

6.python的应用

软件开发游戏后台、搜索、图形界面

网站

科学运算

系统管理

脚本

IT自动化工具

 

二.Python环境配置

1.python的安装

访问python官网,下载不同平台下的python软件;

Linux操作系统上一般iso镜像里面自带,直接通过yum安装;

 

注意点:

python2.6是一个过渡版本,既可以执行,又包含python3.0的新特性;

现在企业实战应用python版本为2.7版本;

python2.7python2.x系列最后一个版本,不会再有python3.0;

第一个python程序

2.查看python版本

[kiosk@foundation0 ~]$ python --version

Python 2.7.5

# 此处显示python的版本为2.7.5

3.交互式使用python

[kiosk@foundation0 ~]$ pythonPython 2.7.5 (default, Aug  2 2016, 04:20:16)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> print "learn python well"

learn python well

>>>

当在shell命令行输入python命令会进入一个交互式的python编程环境;

python沿袭了C语言的很多用法,输出一字符串,使用print;

退出python的交互式环境通过快捷键ctrl+d或者使用exit()函数;

3.python脚本文件

python交互式环境中,我定义一个变量  a=1  ,存放在内存中.。如果没有退出交互式环境,可通过  print a  打印出a的指,如果退出此次交互式环境,  a  变量存的值  1  已经被内存释放了。因此怎么在下次使用时,依旧可以查看到a变量的值呢?当然是把原先存放在内存的,存放在硬盘上即可。

# firstPython.py文件的内容可通过cat firstPython.py来查看

[kiosk@foundation0 ~]$ vim firstPython.py

[kiosk@foundation0 ~]$ cat firstPython.py

#!/usr/bin/env python

print "learn python well"

 

# 脚本文件一定要注意加上执行权限

[kiosk@foundation0 ~]$ chmod +x  firstPython.py

[kiosk@foundation0 ~]$ python firstPython.py

learn python well

关于python脚本中的第一行内容 :

        #!/usr/bin/python 这种写法表示直接引用系统的默认的 Python 版本,这样的话  

    python 程序移植到其他机器上可能运行的时候有问题,因为别人系统默认的 Python  

    版本与你预期的并不一致。

        #!/usr/bin/env python 这种写法表示,引用环境变量里面自定义的 Python 版本,      具有较强的可移植性,推荐这种写法。由于python的版本不同,python脚本到达不同系统会有语法错误,所以要加上环境变量 env

 

[kiosk@foundation0 ~]$ vim printChinese.py

[kiosk@foundation0 ~]$ cat printChinese.py

#!/usr/bin/env python

print "我是中国人"

 

[kiosk@foundation0 ~]$ chmod +x printChinese.py

[kiosk@foundation0 ~]$ python printChinese.py

  File "printChinese.py", line 2

SyntaxError: Non-ASCII character '\xe6' in file printChinese.py  

on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

执行printChinese.py的报错信息,它说文件的第二行有问题,encoding declared,也就是你的编码格式有问题,怎么

解决呢?用国际通用的编码格式utf-8,数据库Mysql里面也常常要注意编码格式的问题。再

试一次吧。

指定编码格式的方法有很多种,这里就列举几个吧:

#coding:utf-8

#coding=utf-8

#encoding:utf-8

#encoding=utf-8

[kiosk@foundation0 ~]$ vim printChinese.py

[kiosk@foundation0 ~]$ cat printChinese.py

#!/usr/bin/env python

#coding:utf-8

print "我是中国人"

[kiosk@foundation0 ~]$ python printChinese.py

我是中国人切记:绝对不能使用  word  (不是纯文本文件)和  windows  自带的记事本(在文件开始的地方加特殊字符  0xefbbbf<16进制>UTF-8

BOM  ,有了前缀,程序自动判断它为  utf-8  格式,并按  utf-8  格式解析文本或字符串,,需要按照字符编码格式一个个去验证。

4.Python解释器

 cpython

 ipython  :基于  cpython  ,交互方式有所增强

 pypy  : 对代码进行动态编译,  JIT  技术(  just-in-time compiler  ,即时编译器),显著提高代码执行速度。

 Jpython  :java   平台上的  python   解释器,将  python   代码编译成  java`字节码执行。

 IronPython  : 直接将  python  代码编译成  .net  的字节码

 

5.ipython

从网上下载软件ipython

shell终端中执行命令  ipython  试试效果;

[root@foundation60 Desktop]# cd

[root@foundation60 ~]# cd /home/kiosk/Desktop

[root@foundation60 Desktop]# ls

ipython                            python       rhel-server-7.0-x86_64-dvd.iso

linux运维                          python1      rht-desktop.desktop

pycharm-community-2017.1.4.tar.gz  python1.wps  rht-server.desktop

[root@foundation60 Desktop]# cd ipython/

[root@foundation60 ipython]# yum install * -y

 

 

6.Pycharm

访问pycharm官网,或者点击百度云共享链接安装;

下载pychrm社区版本,安装使用,后面我们专门写一个章节,来描述pycharm常用的操作、设置以及快捷键。

Pycharm安装

 

 

 

 

操作:

新建py文件:file->new->python file  ( alt+insert)

 

 

更改字体:file->setting->Appearance&behavior->Appearance->Apply->ok

更改文件内部字体:file->setting-> Editor->Clolors&Fonts->Font->Apply->ok

 

文件开头语添加:

 

 

添加效果:

 

Pycharm图形打开方式:

 

命令打开方式:

[root@foundation60 bin]# pycharm

 

 

三.python编程风格

1.python简洁明了的编程格式,如果不按照python既定的格式进行编写程序,直接报错,所以说,刚开始编写python代码会常常报错。这里我就用C语言和python语言做简单的比较。

1>C语言显示  hello world

#include <stdio.h>

 

void hello()

{

    printf("hello!\n");

}

 

void main()

{

    hello();

}

从上面的代码我们会发现,C代码块是通过花括号  {}  做以区别。

2>python显示  hello world

#!/usr/bin/env python

def hello():

    print "hello world"

 

def main():

    hello()

 

main()根据上面的两个不同编程语言实现同一功能的分析,总结python编程初级要掌握的编程风格如下:

  a不要在行尾加分号;

  b每行不超过80个字符;

  c Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。

  d增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。

Eg:

 

2.python注释

单行注释:  #  常被用作单行注释符号,  #  开头的行,其右边的任何数据都会被忽略,当做是注释。

块注释: 需要批量文本或代码时,使用三引号  ''' '''  .,当然三引号也可以实现多行文本格式化打印。

3.理解字符编码

1>ASCII:美国人发明了计算机,用二进制存储数据,英文字母加各个字符一共128,8位存储一个字符,2^8=256,可通过  ord()  

数去查看字符对应的ASCII码。

2>Unicode:但是ASCII码忽略了中文,韩文,日文等其他国家的文字,这个时候256个字符的对应关系明显是不够用的,这时候就用两个

字节对应一个文字,2**16=65536.

3>UTF-8:英文字符明明可以通过一个字节存储,Unicode却需要2个字节来存储,对于存储比较小的计算机来说,是浪费很多不必要占用的空间,这个时候就出现utf-8。那么什么是utf-8?简单来说就是可变长度编码格式,英文字符用ASCII码来存,而中文呢,就用utf-8来存,这个时候中文就不是两个字节存储,而是三个字节来存。

 

 

python编程有个要注意的问题,python90年代还没有出现Unicode,使用时需要手动指定Unicode格式。

# 指定存储格式为Unicode

[kiosk@foundation0 ~]$ python

Python 2.7.5 (default, Aug  2 2016, 04:20:16)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> a = 'westos'

>>> type(a)

<type 'str'>

>>> b = u'westos'

>>> type(b)

<type 'unicode'>

4.字符的编码与解码

当存储数据到硬盘,需要考虑到节省空间的问题,所以采用utf-8格式进行存储;

当将数据读入内存时,统一一个编码格式便于操作,采用unicode编码格式;

因此字符的编码与解码一定要熟练操作。

## 定义一变量,编码格式为unicode

>>> name_unicode = u'粉条'

>>> type(name_unicode)

<type 'unicode'>

 

## 字符的编码,unicodeutf-8格式

>>> name_utf8 = name_unicode.encode('utf-8')

>>> type(name_utf8)

<type 'str'>

 

## 字符的解码操作,utf-8解码到unicode编码格式

>>> name_to_unicode = name_utf8.decode('utf-8')

>>> type(name_to_unicode)

<type 'unicode'>

 

四.输入与输出

1.输出: 告诉用户程序执行的结果

# print + 字符串...    //字符串可为多个,逗号隔开

# print + 数字|表达式

>> print 300

300

>>> print '100+200=', 100+200

100+200= 300

2.输入: 告诉计算机程序所需的信息

# raw_input写入的内容赋值给变量name,输入的内容为字符类型

>>> name = raw_input("Name:")

Name:westos

>>> print name

westos

>>> type(name)

<type 'str'>

 

# input写入的内容赋值给变量age,输入的内容为数值类型

>>> age = input("Age:")

Age:12

>>> type(age)

<type 'int'>

小练习: 编写一程序,录入信息包括  hostnameIPused_yearCPUMemorymanager_name  ,如果使用年限超过10,直接显示警告

信息“该服务器使用年限太久!,如果使用年限不超过10,显示该服务器信息如下面的格式如下:

                                         主机信息

主机名: hostname

IP:IP

使用年限:used_year

CPU:CPU

Memory:Memory

 

3.变量

变量是内存中的一块区域。

变量的命名: 变量名由字母,数字,下划线组成。

>>> a=1

>>> print a

1

>>> a_1 = 111

>>> _a = 222

>>> print _a

222

>>> 1a = 111

  File "<stdin>", line 1

    1a = 111

     ^

SyntaxError: invalid syntax        //指语法错误,无效的语法

 

 

>>> a = 5

>>> b = 3>>> print a + b

8

>>> print a + b +c

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'c' is not defined        //名称错误

变量的特性:

实际存储在内存上;

变量名最好见名知意;

变量可重新赋值;

>>> number1 = 1

>>> number2 = 2

>>> number1 + number2

3

python中地址变量与c语言刚好相反,一条数据包含包含多个标签;

>>> a = 1

>>> b = 1

>>> id(a)

10812520

>>> id(b)

10812520

4.面试题常见问题:简要描述Python的垃圾回收机制(garbage collection)

Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会消失,分配给该对象的

内存就会释放出来用作他用。

PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用

它的对象被删除,它的ob_refcnt就会减少.引用计数为0,该对象生命就结束了。

5.运算符与表达式

赋值运算符:=, +=, -=, /=, *=, %=

算术运算符:+, -, , /, //, %, *

  >>> 1 + 1

  2

  >>> 1 - 1

  0

  >>> 1 * 3

  3

  >>> 1 / 2

  0

  >>> 1.0 / 2

  0.5

  >>> 1.0 // 2

  0.0

  >>> 1 % 2

  1

  >>> 2 ** 3

  8

  >>> a33 = 3 ** 3

  >>> print a33

  27

  >>> print "a33=",a33

  a33= 27

  >>> print "a33 =",a33

  a33 = 27

关系运算符: >, >=, <, <=, !=, ==

布尔值:1 < 2,返回一个布尔类型的结果

>>> 1 < 2

True

>>> 1 > 2

False

逻辑运算符:逻辑与and, 逻辑或or, 逻辑非not

练习:

编写一四则表达式,(if语句实现)

 

 

五.Python基本数据类型

背景

面试题案例: 123和“123”一样么?

- 从数字角度讲

- 从程序语言的识别来讲

>>> a = 123

>>> stra = "123"

>>> a == stra

False

>>> print a

123

>>> print stra

123

>>> a + stra

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: unsupported operand type(s) for +: 'int' and 'str'

1.数字

1> 整型>>> num1 = 123

>>> type(num1)

<type 'int'>

>>> type(123)

<type 'int'>

2> 长整形

>>> num2 = 999999999999999

>>> type(num2)

<type 'int'>

强制定义为长整型: num3 = 123L

>>> num3 = 123L

>>> type(num3)

<type 'long'>

3> 浮点型:表示小数

>>> f1 = 12

>>> type(f1)

<type 'int'>

>>> f2 = 12.0

>>> type(f2)

<type 'float'>

4> 复数类型:python对复数提供内嵌支持,eg: 3.14j, 8.32e-36j

>>> c = 3.14

>>> type(c)

<type 'float'>

>>> c = 3.14j

>>> type(c)

<type 'complex'>

2.字符串

 1>字符串的定义

# 字符串定义的第一种方式:

>>> str1 = 'our company is westos'

 

# 字符串定义的第二种方式:

>>> str2 = "our company is westos"

 

# 字符串定义的第三种方式:

>>> str3 = """our company is westos"""

 

>>> type(str1)

<type 'str'>

>>> type(str2)

<type 'str'>

>>> type(str3)

<type 'str'>

 

 

>>> say = 'let\'s go'>>> say

"let's go"

>>> say = "let's go "

>>> say

"let's go "

 

转义符号

>>> mail = "tom: hello i am westos "

>>> print mail

tom: hello i am westos

>>> mail = "tom:\n hello\n i am westos "

>>> print mail

tom:

hello

i am westos

 

三重引号:

块注释

函数的doc文档

字符串格式化

>>> mail = """tom:

...     i am jack

...     good luck

... """

>>> print mail

tom:

    i am jack

    good luck

>>> mail

'tom:\n\ti am jack\n\tgood luck\n'

3.字符串索引

>>> a = 'abcde'

>>> type(a)

<type 'str'>

>>> a[0]

'a'

>>> a[1]

'b'

>>> a[3]

'd'

>>> a[0]+a[1]

'ab'

>>> a[0]+a[2]

'ac'

4.字符串切片

>>> a

'abcde'

>>> a[1:5:2]

'bd'

>>> a[1:5]        //代表切片取出第2个到第4

'bcde'

>>> a[:5]

'abcde'

>>> a[4:]

'e'

>>> a[4:1]            //python中默认是从左向右取值

''

>>> a[4:1:-1]        //当步长为-1,从右向左取值

'edc'

>>> a[:]'abcde'

 

 

>>> a[-1]

'e'

>>> a[-4:-1]        //代表倒数第2个到倒数第4个切片

'bcd'

>>> a[-2:-4]

''

>>> a[-2:-4:1]

''

>>> a[-2:-4:-1]

'dc'


作业:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值