python之路 day1 -python 基础1

本节内容从Alxs 博客抄袭而来
一、Python 介绍
Python 的创始人是 吉多.范罗苏姆 在1989 年的圣诞节期间 为了打发时间 开发了 一个新的脚本解释程序,作为ABC语言的一种继承。
目前Python排名大约第五 有上升的趋势 Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言
目前python 主要应用领域:
云计算 、web开发、科学运算、人工智能 、系统运维、金融图形GUI
PYTHON 在一些公司的应用:
谷歌:GOOGLE APP ENFINE 、code.goojle.com、google earth、谷歌爬虫、Google广告等
CIA:美国中情局网站
YouTube:世界最大的视频网站
Dropbox 美国最大的在线云存储网站
Redhat 世界最流行的Linux 发型版本中的yum包管理工具就是用Python开发的
豆瓣:国内几乎所有的雨雾俊是用过Python开发的
知乎 :国内最大的问答社区 通过Python开发的(国外quora)
春雨医生
除了上面还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、土豆、新浪、果壳等都在使用Python完成各种各样的任务
Python 是一门什么样的语言?
变成语言主要从以下几个角度进行分类
编译和解释的区别是什么?
编译器是吧源程序的每一条语句都变编译成机器语言,保存成二进制文件,这样运行时计算机可以直接以机器语言运行次程序,速度很快
而 解释器则是值在执行程序时 才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的速度快


编译型vs解释型
编译型
有点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改需要修改整个模块重新编译,编译的时候根据环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
有点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了计时器(虚拟机)、灵活,修改代码的时候直接修改就好,可以快速部署,不用停机维护。
缺点:每次运行时都要解释一遍,性能上不如编译型语言
汇编语言就是低级语言 从人类思维出发的计算机语言是高级语言
编译与解释
动态语言和静态语言
动态型语言:动态型语言是指在运行期间采取做数据类型检查的语言,也就是说 在动态类型语言编程 的时候是不用给定变量的数据类型,在编程的过程中改语言会根据变量的赋值,在内部将数据类型记录下来。Python 和Ruby 就是一种典型的动态编程语言
静态类型 :静态语言和动态的类型恰好相反,他的数据类型是在编译期间检查的,也就是说在写代码的过程中要声明变量的类型。c/c++ 是静态语言的典型,其他静态类型语言还有c# Java
强类型定义语言和若类型定义语言
1、强类型定义语言 是指一旦变量的类型指定为某个数据类型,如果不经过强制转换,那么他永远就是这个数据类型了
2、若类型定义语言 数据类型可以被忽略的语言。它与强定义语言相反,一个变量可以赋予不同类型的数据类型。
强类型定义语言的速度上可能逊色与若类型定义语言。但是强类型定义语言带来的严谨能都有效的避免许多错误。
总结:
通过以上的介绍,得知Python是 动态解释型的强定义类型语言。
python 的有点和缺点
1、Python 定位是优雅、明确 、简单,所以Python程序看上去总是简单易懂,初学Python 不但入门容易,二期将来深入下去,可以编写那些非常复杂的程序
2、开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都是有相应的模块进行支持,直接下载调用后,在基础库的基础上在进行开发,会大大降低开发周期,避免重复开发
3、高级语言----当你使用Python编程的时候 你无需考虑注入如何管理你的程序使用内存一类的底层细节
4、可移植性-----由于他的开源本质Python 已经被移植 在许多平台上。如果你小心的避免使用以来与系统的特性,那么你的所有Python 程序无需修改就你胡可以在市场上所有的系统平台上运行
5、可扩展性------如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以吧一部分程序用c或者c++编写,然后在你的Python 程序中使用它们
6、可嵌入性---- 你可以把Python嵌入你的c/c++程序,从而向你的程序用户提供脚本功能。
有点总结
优雅 明确 简单 、开发效率高、高级语言、可移植性、可扩展性、可嵌入
缺点
1、速度慢Python的裕兴速度相比c原缺失很慢 跟Java相比也是要慢一些,因此这也是很多的所谓的大牛不屑于使用Python的主要原因,但是其实小河里所致的运行速度慢在大多数情况下用户是无法直接感知到的必须借助工具
2 代码不能加密 Python是解释型语言 他的代码都是以名文的形式存放
3、线程不能利用多CPU问题,这是Python被人诟病最多哦的一个缺点GIL 是全局解释器锁(global inerpreter lock),是计算机程序设计语言解释器用语同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread, 在windows 上为winthread,完全由操作系统调度线程的执行。一个Python解释器进程内有一条主线程,以及多条用户程序的执行线程。及时在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行,。关于这个问题折中解决方法,我们在以后线程和进程章节里在进行详细探讨。

五、Holleworld 程序
print(“hello world!”)
六、变量|字符编码
变量的声明
name=“hoffman”
Python 是动态语言不需要定义变量类型
变量的定义规则
》变量只能是 字母数字下划线的任意组合
》变量的第一个字符不能是数字
》变量不能是关键字
》变量命名要见名知意

七、字符编码
Python解释器在加载 .py 文件中的代码是,会对内容进行编码(默认ascill)
ASCII(American standard code for information interchange,美国标准信息交换代码)
python 3 是支持中文的
utf-8

注释
单行注释用#
多行注释用“”“”备注是内容“”“” 使用成对的三引号
八、用户输入
#!/usr/bin.env python (env 表示取环境变量)
#_*_coding:utf-8_*_
#name=raw_input("what is your name?")
#在Python 3 中的输入是
name=input(“what your name?”)
输入密码
Python3 中
import getpass
pwd=getpass.getpass("请输入密码:")
#输入的内容会被隐藏 看不到
print(pwd)
(注意 这里引用 getpass 包 在pycharm 中是不好用的 )
其他先跳过
十一 数据类型
1、数字
int(整型)
-2**31~2**31 (31位机器)
-2**63~2**63-1(64位机器)
Python中没有指定长整形的长度 但是由于机器内存有大小 所以长整型和内存有关系
整型过长是 Python自动转换成长整型
float(浮点数)
浮点数是用来处理实数的,既带有小数的数字。类似于C语言中的double 类型。 占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号
complex(复数)
如果是使用单引号 的字符串 字符串中间出现一个单引号就会报错
这是可以使用一个\' 来转译
使用三引号程序能够原格式输出
name3=“”“”ahsdof
jalsdjfkasf
asdfasdf''''''
print(name3)
结果会是 保持原格式输出 包括空格 和回车
基本的字符串运算
- len()函数
可以计算字符串的长度
- 拼接 +
name=name1+name3
这样就把两个字符串拼接起 拼接只能拼接字符串
- 重复 *
name=name*3
表示吧name 拼接三次赋值给name
还可以写成3*name
这里只能乘以一个整数 否则是错误的
- in
判读一个字符串是否是另一个字符串的子串(这里面大小写是敏感的)
返回值:true 或者false
‘a’ in name
结果是 true
- for语句
他的含义是枚举字符串中的每个字符
定义字符串
>>>my_str= 'holle world'
#char 代表定义的变量
>>>for char in my_str:
print(char)
结果为
>>>
h
o
l
l
e
w
o
r
l
d
举例 编写一个 vowels_count 函数 计算一个字符串中的元音字母(aeiou或者AEIOU)的数目
#Author:hoffman
#计算一个字符串中的元音字母的个数
my_str=input("请输入一个字符串:")
def vowels_count (str):
count = 0
for char in str:
if char in "aeiouAEIOU":
count+=1
return count
print (vowels_count(my_str))
- 字符串索引(index)
1、字符串中每个字符都有一个索引值(下标)
2、索引从0(前向后) 或者-1(后向前)开始
| forward | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| h | e | l | l | o | w | o | |
| backward | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
3、索引的运算符[ ]
name="hello world"
name[0] 就是 h
name[-1] 就是 d
这样就获得了字符串中的一个字符 这里的索引数字不能超出范围 否则或报错
- 切片slicing
1、通过切片可以获得字符串的一段字符
2、语法为
[start : finish:countby]
start 表示从字符串索引的第几个索引的后一个开始
finish 表示 到第finish 这个索引的字母的前一个字母结束
使用如果不提供 start 就表示从头开始
如果不提供 finish 表示一直到结尾
countby 是计数参数 这和range 中的步长是 一直的
默认是 1 但是根据需要可以改变
start 和finish 都不写 countby 写-1 就可以获得元字符串的一个逆序
#Author:hoffman
str="alkjsdflkjaslkdf"
print(str[::-1])
>>>fdklsajklfdsjkla
- 字符串不可变
字符串一旦生成是不能随意的被改变的
Python是动态编译强定义类型
列如
name=“”Holle world”
name[2]='a'
想把索引为2的字符换掉是不行的
如果确实想换只能这样
name=name[:1]+'a'+name[2:]
使用切片和拼接 并且还要覆盖元字符串
#Author:hoffman
str="alkjsdflkjaslkdf"
str=str[:1]+'a'+str[2:]
print(str)
>>>aakjsdflkjaslkdf
以上方法是比较繁琐的
我们可以使用字符串方法
对象提供的函数
str.replace(old,new)
生成一个新的字符串,其中使用new子串 替换 old子串
例如:
#Author:hoffman
str="alkjsdflkjaslkdf"
str= str.replace('a','c')
print(str)
>>>clkjsdflkjcslkdf
注意:调用replace()方法返回一个新的字符串,原来字符串是没有改变的,要是想改变原来值 就把生成的字符串赋值给原来的变量
str.find('l')
find 函数是查找一个字符串中的子串的下标
split
就是将一个字符串切分成片
- 字符串的格式化输出
#Author:hoffman
#一下代码实现了原格式输出
name=input("name:")
origin=input("make_address:")
age=int(input("age:"))
print(type(age))
salary=float(input("salary float:"))
gender=input("gender:")
#拼接输出使用%s %d %f 分别表示字符串 数字 单精度数字
inof1 ="""
----------info of %s-----
name:%s
origin:%s
age:%d
salary:%f
gender:%s
""" %(name,name,origin,age,salary,gender)
print(inof1)
#使用 {} 和.format()
inof2="""
--------info of {_name}----
name:{_name}
origin:{_origin}
age:{_age}
salary:{_salary}
gender:{_gender}
""".format(_name=name,_origin=origin,_age=age,_salary=salary,_gender=gender)
#这里面少了一个)_name
print(inof2)
#使用 {0} {1}表示占位
inof3="""
--------info of {0}----
name:{1}
origin:{2}
age:{3}
salary:{4}
gender:{5}
""".format(name,name,origin,age,salary,gender)
print(inof3)
|
1
2
3
|
name_list = ['alex', 'seven', 'eric']或name_list = list(['alex', 'seven', 'eric']) |
基本操作:
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
|
1
2
3
|
ages = (11, 22, 33, 44, 55)或ages = tuple((11, 22, 33, 44, 55)) |
|
1
2
3
|
person = {"name": "mr.wu", 'age': 18}或person = dict({"name": "mr.wu", 'age': 18}) |
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度
7、正则表达式(regular Expressions)
. 表示任意字符
[a-z] 表示一个小写字母
\d+ 表示一系列数字
#Author:hoffman
#re 表示调 包 正则表达 regular expressions re是缩写
#name.txt 文件每一行是一个字符串 姓名
#判断一个人名中是否含有c.a 模式
import re
f =open('name.txt')#打开name这个文件 打开文件 有 可读可写 具体百度
pattern='(c.a)'
for line in f:#遍历f这个文件 一行一行遍历
name = line.strip()#去除一行中首位的空格
result = re.search(pattern,name)#search()函数判断c.a 模式是否在 name中
if result:
print ('Find in {}'.format(name))
f.close()
Python strip()方法
描述
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
语法
strip()方法语法:
str.strip([chars]);
参数
- chars -- 移除字符串头尾指定的字符。
返回值
返回移除字符串头尾指定的字符生成的新字符串。
实例
以下实例展示了strip()函数的使用方法:
实例(Python 2.0+)
以上实例输出结果如下:
Runoob
Runoob
十二、数据运算






Python 字符串
浙公网安备 33010602011771号