python基础

来源:互联网 发布:中断控制器编程实验 编辑:程序博客网 时间:2024/06/03 11:17

###################################################
######################
了解python#######################
###################################################
.什么是python?

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

.python的简史

   * 1989
,Guido(龟叔)ABC语言写的一个插件。因MontyPython的喜剧团体的原因,故给这个语言起名pythonlinux也是1989年诞生的,1991年正式发布linux1.0内核;
   * 1990
, 发布python的第一个版本;
   * 2001
年发布python2.0版本;
   * 2010
年获年度Tiobe编程语言大奖,TIOBE网站;
     TIOBE
编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 GoogleMSNYahoo!WikipediaYouTube以及 Baidu )进行计算。请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。
   * 2013
年发布python3.x版本;

.python为什么这么火?

    
早期的国外互联网公司很多网站就是用python开发,google中国将python编程带到中国,后面有豆瓣网站Youtube,雅虎,google(现在主推Go语言),NASApython编程,2010年之后,移动互联网的兴起,项目开发周期短的语言越来越火,在运维圈,有很多优秀的第三方库,便于开发,移植性很强。

.python的优点

1.
创始人评价:简单、优雅、明确
   *
简单体现在如果你的母语是英语,python脚本就像写文章,很简单;
   *
优雅体现在python的格式,比如缩进来确定代码块,可避免编程人员进行复杂的嵌套;
   *
明确体现在解决问题的方法只有一种最优选项,perl语言是每个问题有很多最优解,但不利于团队协作;
2.
有强大的第三方库模块,需要实现一复杂功能,只需调用现有的库,可快速实现功能。20多年的发展,各种库都已经完备,比如:邮件库,爬库......
3.
可跨平台移植,javaJava的虚拟机,python同样;
4.
是一种面向对象的语言;
5.
是一种可扩展的语言(C,C++,Java结合)

.python的缺点

   *
代码执行速度慢,相比C语言,不过现在python的异步并发框架导致执行速度慢;
 * python
是开源的编程语言,代码不能加密,当然有相应的工具可以将python代码转换为exe的二进制可执行码,但是反解码也很容易;

.python的应用

  *
软件开发
  *
游戏后台、搜索、图形界面
  *
网站
  *
科学运算
  *
系统管理
  *
脚本
 *IT
自动化工具
 ##################################################
 ######################
使用python######################
 ##################################################
python
的安装

  *
访问python官网,下载不同平台下的python软件;
 * Linux
操作系统上一般iso镜像里面自带,直接通过yum安装;
注意点:
 * python2.6
是一个过渡版本,既可以执行,又包含python3.0的新特性;
  *
现在企业实战应用python版本为2.7版本;
 * python2.7
python2.x系列最后一个版本,不会再有python3.0;

首先yum install pytnon -y ##安装python

1.python -V
  python -version  ##
查看python版本


2.python  ##
进入交互式python


[root@foundation57 ~]# python
Python 2.7.5 (default, Oct 11 2015, 17:47:16)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or"license" for more information.
>>> print "hahahakaixin"       #
输出
hahahakaixin
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()

  ps:
exit()Ctrl+d退出,交互
3.
脚本执行python

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

[root@foundation57 ~]# vim hahaha.py   ##
名字可以随便起 py代表python

#!/usr/bin/env python         
#coding:utf-8
print "
哈哈哈开心“


[root@foundation57 ~]# chmod +x hahaha.py ##
给脚本文件加上执行权限
[root@foundation57 ~]# python hahaha.py
哈哈哈开心

 ******************************************************
 *********
为什么要用#/usr/bin/env python开头********
 ******************************************************
a.#!/usr/bin/python
这种开头表示直接引用系统默认的python版本,但由于不同版本的python不兼容,这个python程序移植到其他机器可能就会有问题(which python)可以查看python可执行文件的位置。
b.#
/usr/bin/env python 加上env后,作用主要是代码移植。表示引用环境变量里面自定义的 Python版本,
c.
如果要用中文的话,就要用国际通用的编码格式,常见的几种有:
#coding:utf-8
#coding=utf-8
#encoding:utf-8
#encoding=utf-8
执行:python hahaha.py


    
切记:绝对不能使用  word  (不是纯文本文件)  windows 自带的记事本(在文件开始的地方加特殊字符  0xefbbbf<16进制>UTF-8BOM  ,有了前缀,程序自动判断它为 utf-8 格式,并按  utf-8  格式解析文本或字符串,否则,需要按照字符编码格式一个个
去验证。

######################Python
解释器#######################
  cpython
  ipython:
基于  cpython,交互方式有所增强
  pypy:
对代码进行动态编译,  JIT技术(  just-in-time compiler  ,即时编译器),显著提高代码执行速度。          
  Jpython:java
平台上的  python解释器, python  代码编译成  java`字节码执行。
  IronPython:
直接将  python代码编译成  .net 的字节码

##################################################
#####################
字符编码#######################
##################################################
  * ASCII:
美国人发明了计算机,用二进制存储数据,英文字母加各个字符一共128,8位存储一个字符,2^8=256,可通过 ord() 函数去查看字符对应的ASCII码。
  * Unicode:
但是ASCII码忽略了中文,韩文,日文等其他国家的文字,这个时候256个字符的对应关系明显是不够用的,这时候就用两个字节对应一个文字,2**16=65536.
  * UTF-8:
英文字符明明可以通过一个字节存储,Unicode却需要2个字节来存储,对于存储比较小的计算机来说,是浪费很多不必要占
用的空间,这个时候就出现utf-8。那么什么是utf-8?简单来说就是可变长度编码格式,英文字符用ASCII码来存,而中文呢,就用utf-
8
来存,这个时候中文就不是两个字节存储,而是三个字节来存


ASCII
1字节=8位,2^8=256
Unicode
2字节=16位,2^16=65536   a -> 2字节中文 -> 2字节
utf-8:a -> 1
字节, 中文 -> 3字节
GB2312:2
字节

内存读取:Unicode
存在硬盘:utf-8

字符的编码(encode:unicode->utf-8 
字符的解码(decode:utf-8->unicode
 
##
在进行内存读取处理时,要统一字节,不然不符合储存规则。即统一一个编码格式便于操作,所以采用unicode编码格式;
    
而存在硬盘时,当然是越小越好。就用utf-8格式进行存储。
    
所以就存在字符的编码,解码。


示例:


[root@foundation57 ~]# python
Python 2.7.5 (default, Oct 11 2015, 17:47:16)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or"license" for more information.
>>> a=u"
哈哈"                ##指定a=unicode类型
>>> type(a)        ##type
()查看变量类型
<type 'unicode'>
>>> b=a.encode('utf-8')    ##
进行字符编码,编码unicode->utf-8
>>> type(b)
<type 'str'>
>>> c=b.decode('utf-8')   ##
进行字符解码,解码utf-8->uincode
>>> type(c)
<type 'unicode'>
>>>
############################################
############
c语言与python比较#################
############################################

C
语言显示hello world

[root@foundation44 ~]# vim hello.c    
#include <stdio.h>


void hello(){
          printf("hello!");
       }


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

python
显示  helloworld:

[root@foundation44 ~]# yum install gcc
[root@foundation44 ~]# gcc hello.c -o hello  ##
编译
[root@foundation44 ~]# ./hello               ##
执行
hello!
[root@foundation44 ~]# vim hello.py         ##
有缩进
#!/usr/bin/env python


def hello():
    print "hello"
def main():
    hello()
    print "world"


main()

[root@foundation44 ~]# python hello.py
hello
world
[root@foundation44 ~]# vim hello.py         ##
没有缩进
#!/usr/bin/env python


def hello():
    print "hello"
def main():
    hello()
print "world"


main()

[root@foundation44 ~]# python hello.py
world
hello
 * 
根据上面的两个不同编程语言实现同一功能的分析,总结python编程初级要掌握的编程风格如下:
     a.
不要在行尾加分号;
     b.
每行不超过80个字符;
     c.Python
语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。
     d.
增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。

##################python
注释################
  *
单行注释:  #  常被用作单行注释符号,  # 开头的行,其右边的任何数据都会被忽略,当做是注释。
  *
块注释: 需要批量文本或代码时,使用三引号 ''' '''  .,当然三引号也可以实现多行文本格式化打印。


##################################################
#####################
编写简单的题目###################
###################################################


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'>

3.
变量


变量是内存中的一块区域。
变量的命名: 变量名由字母,数字,下划线组成。

示例:

>>> a=1
>>> print a
1
>>> a_1 = 111
>>> _a = 222
>>> print _a
222
>>> 1a = 111
  File "<stdin>", line1
    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       //
名称错误


4.
变量的特性:

实际存储在内存上;
变量名最好见名知意;
变量可重新赋值;


示例:

>>> number1 = 1
>>> number2 = 2
>>> number1 + number2
3


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


>>> a = 1
>>> b = 1
>>> id(a)
10812520
>>> id(b)
10812520


!!!面试题常见问题:简要描述Python的垃圾回收机制(garbage collection)
  * Python
在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会消失,分配给该对象的内存就会释放出来用作他用。
  * PyObject
是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少.引用计数为0,该对象生命就结束了。



###################
运算符与表达式######################

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


示例:
 
>>> 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 > 2False

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



############################################
##############python
的基本数据类型################
############################################


整型:

>>> num1 = 123
>>> type(num1)
<type 'int'>
>>> type(123)
<type 'int'>



长整形:

>>> num2 = 999999999999999
>>> type(num2)
<type 'int'>



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

>>> num3 = 123L
>>> type(num3)
<type 'long'>



浮点型:表示小数:

>>> f1 = 12
>>> type(f1)
<type 'int'>
>>> f2 = 12.0
>>> type(f2)
<type 'float'>



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

>>> c = 3.14
>>> type(c)
<type 'float'>
>>> c = 3.14j
>>> type(c)
<type 'complex'>



#############
字符串###############

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'
字符串索引
>>> 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'
字符串切片
>>> 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'
 

原创粉丝点击