Dukeidea

导航

Python学习笔记-基础1

一 初识Python

   python是一种面向对象、解释型的计算机程序语言。Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并获取了非常好的效果,完美结合了C和其他一些语言。

    Python的设计哲学是“优雅”、“明确”、“简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”,也因此它和拥有明显个人风格的其他语言很不一样。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确没有或者很少有歧义的语法。

    目前Python主要应用领域:

    云计算: 云计算最火的语言, 典型应用OpenStack
    WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
    科学运算:典型库NumPy, SciPy, Matplotlib

    系统运维: 运维人员必备语言
    金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
    图形GUI: PyQT, WxPython,TkInter

    人工智能: Enthought librarys,pandas,谷歌Tensorflow

 

 

二 Python入门知识

1.Hello World!

1 print("hello world!)

打印一个语句"hello world!" So easy!!!

2.编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号,显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

   Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

   UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),所以如果不指定编码类型,如果有中文就会报错。

 

3.注释

1 #单行注释
2 
3 """多行注释
4      多行注释"""
5 
6 '''多行注释
7      多行注释'''

 

4.变量

声明变量

1 name = "Duke"
2 name = name 2
3 
4 city = "Chengdu"
View Code

变量声明的规则

变量声明有规则,只能是数字字母,不能有特殊字符,第一个不能是数字,某些关键字不能使用

例如:['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

尽量使用有含义的变量名!

 

5.用户输入

1 #Python3.x
2 name = input("请输入你的姓名“)  #使用input()接收用户收入的内容并打印
3 print(name)
4 
5 #Python2.x
6 name = raw_input("请输入你的姓名“)
7 print name 

 

6.模块初识

模块即库,Python的强大之处在于他有非常丰富和强大的标准库第三方库,几乎你想实现的任何功能都有相应的Python库支持。

使用 import xxx   实现

import getpass  #输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法

password = getpass.getpass("请输入密码:")
print(password)

 

7.PYC是什么?

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

 

8.数据类型

1.数字

int(整型)
  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)

2.布尔型  Boolean

3.字符串  String

4.列表  List

5.元组  Turple

6.字典  Dict

 

7.数据运算

算数运算:

操作符描述eg
+ 加法 - 对操作符的两侧增加值 a + b = 30
- 减法 - 减去从左侧操作数右侧操作数 a - b = -10
* 乘法 - 相乘的运算符两侧的值 a * b = 200
/ 除 - 由右侧操作数除以左侧操作数 b / a = 2
% 模 - 由右侧操作数和余返回除以左侧操作数 b % a = 0
** 指数- 执行对操作指数(幂)的计算 a**b = 10 的幂 20
// 取整除返回商的除法,其中结果是将小数点后的位数被除去的商。 9//2 =  4 而 9.0//2.0 = 4.0

 比较操作符:

运算符描述示例
== 检查,两个操作数的值是否相等,如果是则条件变为真。 (a == b) 不为 true.
!= 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a != b) 为 true.
<> 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a <> b) 为 true。这个类似于 != 运算符
> 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 (a > b) 不为 true.
< 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 (a < b) 为 true.
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 (a >= b) 不为 true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 (a <= b) 为 true.

赋值运算符:

运算符描述示例
= 简单的赋值运算符,赋值从右侧操作数左侧操作数 c = a + b将指定的值 a + b 到  c
+= 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 c += a 相当于 c = c + a
-= 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 c -= a 相当于 c = c - a
*= 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 c *= a 相当于 c = c * a
/= 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 c /= a 相当于= c / a
%= 模量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 c %= a is equivalent to c = c % a
**= 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 c **= a 相当于 c = c ** a
//= 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 c //= a 相当于 c = c // a

位运算符: 

操作符描述示例
& 二进制和复制操作了一下,结果,如果它存在于两个操作数。 (a & b) = 12 即 0000 1100
| 二进制或复制操作了一个比特,如果它存在一个操作数中。 (a | b) = 61 即 0011 1101
^ 二进制异或运算符的副本,如果它被设置在一个操作数而不是两个比特。 (a ^ b) =  49 即  0011 0001
~ 二进制的补运算符是一元的,并有“翻转”位的效果。 (~a ) =  -61 即 1100 0011以2的补码形式由于带符号二进制数。
<< 二进位向左移位运算符。左操作数的值左移由右操作数指定的位数。 a << 2 = 240 即 1111 0000
>> 二进位向右移位运算符。左操作数的值是由右操作数指定的位数向右移动。 a >> 2 = 15 即 0000 1111

 逻辑运算符:

运算符描述示例
and 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。 (a and b) 为 true.
or 所谓逻辑OR运算符。如果有两个操作数都是非零然后再条件变为真。 (a or b) 为 true.
not 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。

not(a and b) 为 false

 

8.流程控制

1.if 表达式

if else:

1 age = input(“请输入年龄”)
2 my_age = 18
3 
4 if age == my_age:
5     print("you are right!")
6 else:
7    print("you are wrong!")
View Code

if elif else:

1 age = input("请输入年龄")
2 my_age = 18
3 
4 if age == my_age :
5     print("you are right")
6 elif age > my_age :
7     print("smaller")
8 else:
9     print("you should try bigger")
View Code

在书写表达式的时候,注意缩进!!!

2.循环

while循环:当条件为真的时候运行,当条件为假的时候停止

1 count = 0
2 while True:
3     print("conut:",count)
4     count += 1
5     if count == 10000:
6         break    #当count等于10000时候退出

ps:break表示停止循环,而coutinue语法是跳出整个循环进入下次循环

for循环:

1 for i in range(10):
2     print("loop:", i )

输出结果为:0,1,2,3,4,5,6,7,8,9,10

另外一个例子:

1 for i in range(0,10,2):    #2为步长,不写其实默认为0
2     print("loop:",i)

输出结果为:0,2,4,6,8

coutinue的使用例子:

1 for i in range(10):
2     if i<5:
3         continue #停止,直接进入下一次循环
4     print("loop:", i )

输出结果为:6,7,8,9

 

9.入门知识拾遗

字符串格式化输出

1 name = "Duke"
2 print("i am %s"%name)

常用-----> 字符串 %s;整数 %d;浮点数%f

另一种实现方法之format()方法

1 print('Hi,{name},{message}'.format(name = 'Duke',message = 'i am in Chengdu'))

 

Type()方法

获取变量的类型

1 name = "Duke"
2 print(type(name))
3 #输出结果  <class 'str'>
4 
5 num = 998
6 print(type(num))
7 #输出结果  <class 'int'>
View Code

 

posted on 2017-02-03 11:42  Dukeidea  阅读(191)  评论(0编辑  收藏  举报