1.1 Python优点
1、简单、优雅、明确
2、强大的模块三方库
3、易移植
4、面向对象
5、可扩展(c\java\c#...)
1.2 Python缺点
1、代码不能加密
2、速度慢
1.3 Python用途
一软件开发
1、游戏后台、搜索、图形界面
2、网站
3、C\S软件
4、科学运算
1.4 python解释器
— Cpython 官方标准
— Ipython ipython是一个python的交互式shell,比默认的python shell好用很多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数,在ubuntu下只要sudo apt-get install ipython就装好了,通过ipthon启动。
— Jython--Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython 也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
— PYPY python写的解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
— IronPython-- .net version
小结
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.NET平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
1.5 python变量和常量
a、标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘_’)
b、标识符名称的其他部分可以由字母(大写或小写)、下划线(‘_’)或数字(0-9)组成。
c、标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
d、有效标识符名称的例子有i、_my_name、name_23和a1b2_3。
f、无效标识符名称的例子有2things、this is spaced out和my-name。
大写的是常量
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:
PI=3.14159265359
但事实上PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI的值,也没人能拦住你。
最后,理解变量在计算机内存中的表示也非常重要。当我们写:
a='ABC'
时,Python解释器干了两件事情:
1、在内存中创建一个'ABC'的字符串;
2、在内存中穿件另一个名为a的变量,并把它指向‘ABC’。
也可以把一个变量a赋值给另一个变量d,这个操作实际上是把变量b指向变量a所指向的数值,例如下面的代码:
a = 'ABC'
b = a
a = 'XYZ'
print b
最后一行打印出变量的内容到底是'ABC'还是'XYZ'?如果从数学意义上理解。就会错误地得出b和a相同,也应该是'XYZ',但实际上b的值是'ABC'
1.6 python注释
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
1.7 python字符编码
ascii用1个字节(8位二进制)代表一个字符
unicode utf-32 一个字符 占 4个字节
unicode utf-16 一个字符 占 2个字节
utf-8 可变长的字符编码 一个英文占一个字节,一个中文占3个字节
编码时在前面加入
#_*_ coding:utf-8 _*_
1.8 python用户交互及格式化打印
#!/usr/bin/env pvthon # -*- coding:utf-8 -*- name = input("name:") age = int(input("age:")) job = input("job:") hobby = input("hobby:") info = ''' --------- info of %s ----------- name : %s age : %d job : %s hobby: %s --------------end-------------------- '''%(name,name,age,job,hobby) print(info) info2 = ''' ---------- info3 of {_name} -------------- name : {_name} age : {_age} job : {_job} hobby: {_hobby} '''.format(_name=name,_age=age,_job=job,_hobby=hobby) print(info2) info3 = ''' ---------- info2 of {0} -------------- name : {1} age : {2} job : {3} hobby: {4} ''' print(info3)
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- import getpass # 将用户输入的内容赋值给 name 变量 pwd = getpass.getpass("请输入密码:") # 打印输入的内容 print(pwd)
提示:getpass在pycharm里不兼容。
猜年龄
#!/usr/bin/env python # -*- coding: utf-8 -*- age_of_oldboy = 56 guess_age = int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it") elif guess_age > age_of_oldboy: print("think smaller!") else: print("think bigger!")
while循环
#!/usr/bin/env python # -*- coding: utf-8 -*- age_of_oldboy = 56 count = 0 while count < 3 : guess_age = int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it") break elif guess_age > age_of_oldboy: print("think smaller!") else: print("think bigger!") count += 1 if count == 3: guess_confirm = input("do you want keep playing? y/n:") if guess_confirm == 'n': count = 0 else: print("fuck")
for循环
#!/usr/bin/env python # -*- coding: utf-8 -*- for i in range(10): print("--------",i) for j in range(10): print(j) if j > 5: break