与python的第一次邂逅
python简介
一.什么是python
- python是一种面向对象、直译式的计算机程序语言,所以有了武老师的那句名言:一切皆为对象
- python的设计哲学是:“优雅”,“明确”,“简单”
- python那些能做的事:web程序,GUI开发,自动化运维,领域涉及到数据分析,量化投资,系统编程,组件集成。网络服务,图像处理,数值计算和科学计算,自动化测试,爬虫
二.和其他语言的对比
1.python自身的优缺点:
-
python是一种全栈语言,不仅可以做前端,还可以做后端,并且开发效率高,同样的功能比其他语言少得多的代码,而且python拥有丰富的类库,由于其设计哲学,所以python的代码犹如阅读美文样具有易读性
- 由于python还是一种不成熟的语言,在处理多线程进程表现的不是很完美
2.其他语言的优缺点:
- c语言被认为是最基层的语言,和机器直接打交道,代码直接转换成机器码,执行效率高是无可厚非的,而python等语言首先要把代码编译成字节码,然后再编译成机器码,中间就多了那么一步
- 不过,c语言对内存的拿与放需要频繁的操作,另外提供线程的功能比较少(其实大多数的语言都是基于c语言来做的,而且这些语言的出现就是对c语言的某些方面进行优化,例如java,c#,php,也包括现在讲的python)
- PHP在前端web网站有着先天性的优势,而在后端,却显得那么憔悴无力,而python做前端和后端都是非常的方便,比如数据分析方向
三.python的种类和区别
- 由于python比较火,各大语言都开发了自己版本的python,比如jpython就是Java开发的,rubypython就是ruby开发的...这些不同版本的python都用的是同一套规则
- 另外,它们唯一的不同就是,代码编译过程都是用自己语言的编译器,比如,jpython就是用Java的编辑器把代码编译字节码的,有一个pypy版的python,它的代码是直接转换成机器码,执行效果高,主要常见于微线程,不过我们现在用是的cPython
编程要求
一.语法要求
- 统一缩进:同一级代码必须保持一致!(建议是每次缩进4个空格)
二.变量命名
-
命名规则1.只能包含字母、数字、下划线(python对大小写敏感)2.不能以数字开头3.不能是python中定义的关键字
python的安装与更新
一.安装python
- 下载安装包:
https:
/
/
www.python.org
/
downloads
/
- 安装默认路径:
C:\python3.5
- 配置环境变量:
【右键计算机】
-
-
》【属性】
-
-
》【高级系统设置】
-
-
》【高级】
-
-
》【环境变量】
-
-
》【在第二个内容框中找到 变量名为Path 的一行,双击】
-
-
> 【Python安装目录追加到变值值中,用 ; 分割】
- linux:linux自带,无需安装
二.更新python
- windows:卸载重装即可
- linux:
- 查看默认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解释器的路径 #! /usr/bin/env python
二.写下第一句代码
print('hello world')
print 打印(python2.7可以不加括号,但python3一定要加)
三.编码
- ascii码,8位制,由于计算机语言发明时只考虑了发明者国家的文字语言
- unicode,万国码,兼收了多国的文字语言,至少用两个字节,其中汉字3个字节(弊端:占内存)
- gbk和utf-8,对Unicode加工归类,精简
- # -*- coding:utf-8 -*- 告诉程序用什么编码(py2.7用中文加上这行就是默认ascii转换,py3.0默认utf-8)
四.初识模块和字节码
- 虽然在python的执行方式中的执行文件扩展名可以.txt或.py,但为了规范,统一.py
- 单行注释用#(快捷键--ctrl+/),多行注释用三引号
- import 文件名(等同吧这个文件名的代码导入到了当前程序)
- 文件代码执行过程中就伴随字节码文件的生成.pyc,而且执行时优先找.pyc文件,找不到再找源文件,根据源文件生成一个.pyc文件,然后再执行.pyc文件
五.用户交互
- 交互器:py2.7是raw_input,py3.0是input
username = input('please input your username:') passward = input('please input your passward:') print('用户名:',username,'密码为:',passward)
- 输入的结果为:用户名: 拍省先生 密码为: 123
六.编写流程梳理
- 创建xxx.py文件(文本文件改名)--注:不要有中文路径
- 写代码:1.头两行(指定解释器,指定文件编码) 2.功能代码
- 执行代码:1.打开中终端 2.python 文件路径python
- python编码转换图
#在python2.7中编码转换有一个中转过程 #windows终端能对unicode编码自动转换成默认类型gbk # temp = '李杰' #解码,需要指定原来是什么编码 # temp_unicode = temp.decode('utf-8') # temp_gbk = temp_unicode.encode('gbk') # print(temp_gbk) #而在python3.5中不用人为中转了,程序会自动转换, # 而且在python3移除了python的unicode的类型 temp = '李杰' temp_gbk = temp.encode('gbk') print(temp_gbk) #结果为b'\xc0\xee\xbd\xdc'
七.初识python数据类型
- 数字:age = 18
- 字符串: a1 = ’after‘ 只要是英文单引、双引、三引引起来的内容
- 布尔值: Ture/False(因为python对字母大小写敏感,所以要注意布尔值的首字母要大写)
八.python变量与内存
name1 = 'wupeiqi'
print(id(name1)) #结果为11911888
name2 = name1
print(id(name1),id(name2)) #结果为11911888 11911888
name2 = 'alex' print(id(name2)) #结果为11914576
当name1和name2等于同一个值,显示为指向同一个内存地址,而name2等于另外一个值时,name1和name2指向的内存地址就不同了,从中得出,python是根据值来开辟内存空间的
九.基本条件语句
1.语法格式:if 条件:
内容1
内容2
else:
内容3
内容4
2.同级别保持同样的缩进
3.执行规则:按顺序来,先满足先执行,后满足不执行
n1 = 1
n2 = 2
if n1 < n2:
print('yes')
else:
print('no')
name = input('username:')
pwd = input('passward:')
if name == 'alex' and pwd == '123':
print('yes')
else:
print('no')
4.if...elif...else结构
if 条件:
代码块
elif 条件:
代码块
else:
代码块
inp = input('>>>')
if inp == '1':
print('111')
elif inp == '2':
print('222')
elif inp == '3':
print('333')
else:
print('....')
十.while 循环
语法结构:
while condition: #条件不成立是跳出循环
do someting #又叫循环体
如果条件一直成立,那么就会一直循环下去,称为死循环
import time
n1 = True
while n1: #如果条件一直为真,就发生死循环
print('1')
time.sleep(1) #如果不确定是不是死循环,可以用time来延迟消耗内存的时间
n1 = False #改变循环条件,让循环退出
print('end')
好,我们来看个小实例:输出10以内的所有的正整数
1.第一个可以通过控制循环的条件来输出自己想要的数
n = 1
while n < 11:
print(n)
n = n + 1
print('End')
2.设置标识符来控制条件
import time
kaishi = 1
flag = False #你知道吗?这就是传说中的标识符
while flag:
print(kaishi)
if kaishi == 10: #标识符起作用前要先判断下
flag = False #当标识符再次出现,循环就要退出了
kaishi = kaishi + 1 #循环计数器,也叫迭代器
time.sleep(1) #这是预防死循环的有效缓冲机制
print('End')
3.好的,那么我们接下来介绍一下,一对双胞胎兄弟:break和continue
-
- 这两个小兄弟是干嘛的呢?都有中断循环的天生能力
- 不过,break力气大了点,一力中断了整个循环,而continue只中断本次循环,进入下次循环
好,那掌声响起,看看break这个兄弟的精彩的表演吧
kaishi = 1
while True:
print(kaishi)
if kaishi == 10:
break
kaishi = kaishi + 1
看到没,等于10时就跳出真个循环了
好!接下来是continue兄了,等等,由于你只中断本次循环,进入下次循环,所以你更容易进入死循环,所以我请来time兄来给你助阵,可以开始了
import time
while True:
print('123')
time.sleep(0.2)
continue
print('456')
你看,continue兄开始自己打转转了,一直输出123,它后面的456都看不到
不过这这两兄弟搭配干活,简直就是绝配啊,来,我们瞧瞧吧
现场有人给这两兄弟出了一道难题,就是你把1-10,不过不包7的数字输出
i = 1
while True:
if i == 7:
i +=1
continue
print(i)
if i == 10:
break
i += 1
漂亮,它们做到了,真是一对黄金搭档啊
欢迎大家对我的博客内容提出质疑和提问!谢谢
笔者:拍省先生