python学习之基础篇1(持续更新)
Python
语言介绍:
编译型语言和解释型语言:
编译型语言:通过编译器一次把所有的代码转换为机器语言,然后写成可执行文件
解释型语言:在程序运行的前一刻,还只有源程序而没有可执行程序;当程序没执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换为二进制代码以供执行,就是不断的解释执行、解释执行…..解释型语言是离不开解释程序的
编译型语言程序执行速度块,同等条件下对系统要求较低,开发操作系统、大型应用程序、数据库系统等都采用它。解释型语言因为不需要复杂的编译链接过程,所以使用它修改和调试非常方便,而且由于程序总是以源代码的形式出现,因此只要有相应的解释器,移植几乎不成问题。编译型语言虽然也可以移植,但是前提是必须针对不同的系统分别进行编译,甚至可能会修改代码,这个耗时非常高的。
动态语言和静态语言:
动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说在用动态语言编程时,永远也不用给任何变量指定数据类型,改语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
静态类型语言:它的数据类型实在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型。
强类型定义语言和弱类型定义语言:
强类型定义语言:强制数据类型定义的语言。一旦一个变量被制定了某个数据类型,如果不经过强制装换,那它永远就是这个数据类型。
弱类型定义语言:数据类型可被忽略的语言。一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。
Python是一门动态解释型的强类型定义语言。
python的优缺点:
优点:
1.python的定位是“优雅”、“明确”、“简单”,看上去通俗易懂。
2.开发效率高,Python有非常强大的第三方库,基本上能实现你所想实现的绝大部分东西。
3.高级语言:不需要考虑如何管理你的程序使用内存一类的底层细节。
4。可移植性:如果你小心的避免使用依赖系统的特性,那么你的python程序无需修改就几乎可以在市场上的所有平台运行。
5.可扩展性:可以使用c或c++编写。
6.可嵌入性:可以嵌入c/c++程序,提供脚本功能。
缺点:
1.速度慢
2.代码不能加密:源码是以明文的形式存在的
3.线程不能利用多CUP
python代码配置
1.
申明解释器两种写法,使你的文件变成可执行程序(可执行文件在linux上可以直接使用 ./pythonFile.py执行,但是需要权限chmod 755 pythonFile.py)
#!/usr/bin/python
表示写死了就是要 /usr/bin/python 这个目录下 python 来执行你的脚本。这样写程序的可移植性就差了,如果此路径下python命令不存在就会报错。而且你自己装的其他版本python,这个python默认是装到了/usr/local/bin目录下,这么写你就用不到你自己的版本了,用的系统默认的python版本。
#!/usr/bin/env python
这种写法在你机器上安装了多个版本的python的时候有意义,这样声明的时候,会去取你机器的 PATH 中指定的第一个 python 来执行你的脚本。如果这时候你又配置了虚拟环境的话,那么这样写可以保证脚本会使用你虚拟环境中的 python 来执行
2.
声明编码格式:
# ٩(๑>◡<๑)۶ coding:utf-8 ٩(๑>◡<๑)۶
python写法比较自由,这个随便怎么写,只要符合捕捉正则就行:
coding[:=]\s*([-\w.]+)
当然顶头是要加#的,然后系统开始捕捉coding关键词,coding前面你写啥都不要紧,不要捕捉的。从捕捉coding开始,后面的就得按照正则来写了,[:=] 意思是coding后面得跟冒号或者等号,\s* 意思是跟若干个可选空格, 然后读取后面的任何单词,破折号或点字符作为编解码器。
代码编辑器我用的PyCharm,去官网下载。
语法
变量的申明就不说了,命名规则所有语言基本差不多,这个是动态类型命名
name = "python" name = 'python'
单引号、双引号都可以
python没用常量这个概念。如果非要定义一个常量,命名大写表示常量,但其实它还是个变量。
NAME = "python"
字符串拼接:
name = "ww" age = "22" job = "python" print("my name is " + name) print("my name is" , name) info1 = ''' -----info1 of '''+name+'''---- name:'''+name+''' age:'''+age+''' job:'''+job+''' ''' #建议不要用,空间使用率比其他的高 print(info1) info2 = ''' -----info2 of %s---- name:%s age:%s job:%s '''%(name,name,age,job) print(info2) info3 = ''' -----info3 of {_name}---- name:{_name} age:{_age} job:{_job} '''.format(_name=name,_age=age,_job=job) print(info3) info4 = ''' -----info4 of {0}---- name:{0} age:{1} job:{2} '''.format(name,age,job) print(info4)
if判断:
if userName == "ww" and passWord == "123": print("login success") else: print('error')
while循环
age_of_ww = 24 count = 0 while count<3: guess_age = int(input("guess_age:"))#input接收的都是字符串类型 if guess_age == age_of_ww: print("you got it") break elif guess_age > age_of_ww: print("think smaller....") else: print("think bigger....") count+=1 else: print("you have tride too many times..")#while循环正常结束后会走这里
for循环
for i in range(10): print(i) #打印:0,1,2,3,4,5,6,7,8,9 for i in range(0,10,2):#2为步长,步长默认1 print(i) #打印:0,2,4,6,8 for i in range(0,10):#步长默认1 print(i) #打印:0,1,2,3,4,5,6,7,8,9 for i in range(0,10,3): print(i) #打印:0,3,6,9 age_of_ww = 24 for i in range(3): guess_age = int(input("guess_age:")) if guess_age == age_of_ww: print("you got it") break elif guess_age > age_of_ww: print("think smaller....") else: print("think bigger....") else: print("you have tride too many times..")#for循环正常结束走这里
拓展:
字符编码集发展史:
—>ASCII 255 1bytes
—>需要表示中文 1980 GB2312 7000+汉子
—>1995年 GBK1.0 2W+汉子
—>2000年 GB18030 27000+
—>国际标准组织 unicode 所有都存2bytes 英文存储变大了
—>utf-8 英文存1bytes 中文存3bytes
Python2默认编码集是ASCII,如果需要使用中文需要申明utf-8编码集:# coding:utf-8
Python3默认编码集是utf-8
浙公网安备 33010602011771号