您的位置:首页 > 编程语言 > Python开发

Python 基础知识点

2016-11-01 10:04 127 查看
在Python中有4种类型的数——整数、长整数、浮点数和复数。

2是一个整数的例子。
长整数不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子。
 

字符串
字符串是 字符的序列 。字符串基本上就是一组单词。

我几乎可以保证你在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内容。下面告诉你如何在Python中使用字符串。

使用单引号(')
你可以用单引号指示字符串,就如同'Quote me on this'这样。所有的空白,即空格和制表符都照原样保留。

使用双引号(")
在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"。

使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:

'''This is a multi-line string. This is the first line.
This is thesecond line.
"What's yourname?," I asked.
He said"Bond, James Bond."
'''

转义符
假设你想要在一个字符串中包含一个单引号('),那么你该怎么指示这个字符串?例如,这个字符串是What's your name?。你肯定不会用'What's your name?'来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是字符串的结尾。可以通过 转义符 来完成这个任务。你用\'来指示单引号——注意这个反斜杠。现在你可以把字符串表示为'What\'s your name?'。

另一个表示这个特别的字符串的方法是"What's your name?",即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\\来指示反斜杠本身。

值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:

"This is the first sentence.\
This is thesecond sentence."

等价于"This is the first sentence. This is the second sentence."

自然字符串
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicated by \n"。

Unicode字符串
Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."。

记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。

字符串是不可变的
这意味着一旦你创造了一个字符串,你就不能再改变它了。虽然这看起来像是一件坏事,但实际上它不是。我们将会在后面的程序中看到为什么我们说它不是一个缺点。

按字面意义级连字符串
如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s' 'your name?'会被自动转为"What's your name?"。

给C/C++程序员的注释

在Python中没有专门的char数据类型。确实没有需要有这个类型,我相信你不会为此而烦恼。

给Perl/PHP程序员的注释

记住,单引号和双引号字符串是完全相同的——它们没有在任何方面有不同。

给正则表达式用户的注释

一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'或r'\1'。

 

标识符的命名
变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,你要遵循这些规则:

标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)。
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成。
标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
 

给C/C++程序员的注释
使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。

 

 

下面是一个在多个物理行中写一个逻辑行的例子。它被称为明确的行连接

s =
 
'Thisis a string. \

This continues the string.'

print
 
s


它的输出:

Thisis a string. This continues the string.


 

空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。

这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个

i =
 
5

print
 
'Valueis'
, i


错误,不正确的缩进


 


你编写的大多数语句(逻辑行)都包含表达式。一个简单的表达式例子如
2 + 3
。一个表达式可以分解为运算符和操作数。

2,3 为操作数

 

 

运算符

运算符
名称
说明
例子
+

两个对象相加
3 + 5得到8。'a' + 'b'得到'ab'。
-

得到负数或是一个数减去另一个数
-5.2得到一个负数。50 - 24得到26。
*

两个数相乘或是返回一个被重复若干次的字符串
2 * 3得到6。'la' * 3得到'lalala'。
**

返回x的y次幂

3 ** 4得到81(即3 * 3 * 3 * 3)
/

x除以y
4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333
//
取整除
返回商的整数部分
4 // 3.0得到1.0
%
取模
返回除法的余数
8%3得到2。-25.5%2.25得到1.5
<< 
左移
把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)
2 << 2得到8。——2按比特表示为10
>> 
右移
把一个数的比特向右移一定数目
11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。
&
按位与
数的按位与
5 & 3得到1。
|
按位或
数的按位或
5 | 3得到7。
^
按位异或
数的按位异或
5 ^ 3得到6
~
按位翻转
x的按位翻转是-(x+1)
~5得到6。

小于
返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。

大于
返回x是否大于y
5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
<=
小于等于
返回x是否小于等于y
x = 3; y = 6; x <= y返回True。
>=
大于等于
返回x是否大于等于y
x = 4; y = 3; x >= y返回True。
==
等于
比较对象是否相等
x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。
!=
不等于
比较两个对象是否不相等
x = 2; y = 3; x != y返回True。
not
布尔“非”
如果x为True,返回False。如果x为False,它返回True。
x = True; not y返回False。
and
布尔“与”
如果x为False,x and y返回False,否则它返回y的计算值。
x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。
or
布尔“或”
如果x是True,它返回True,否则它返回y的计算值。
x = True; y = False; x or y返回True。短路计算在这里也适用。
 

表5.2 运算符优先级

运算符
描述
lambda
Lambda表达式
or
布尔“或”
and
布尔“与”
not x
布尔“非”
in,not in
成员测试
is,is not
同一性测试
<,<=,>,>=,!=,==
比较
|
按位或
^
按位异或
&
按位与
<<,>>
移位
+,-
加法与减法
*,/,%
乘法、除法与取余
+x,-x
正负号
~x
按位翻转
**
指数
x.attribute
属性参考
x[index]
下标
x[index:index]
寻址段
f(arguments...)
函数调用
(experession,...)
绑定或元组显示
[expression,...]
列表显示
{key:datum,...}
字典显示
'expression,...'
字符串转换
 

 

 

使用if语句

对于
raw_input
函数来说是一个字符串。我们通过
int
把这个字符串转换为整数,并把它存储在变量
guess


注意
if
语句在结尾处包含一个冒号——我们通过它告诉Python下面跟着一个语句块

。我们在这里使用的是
elif
从句,它事实上把两个相关联的
ifelse-if else
语句合并为一个
if-elif-else
语句。这使得程序更加简单,并且减少了所需的缩进数量。

elif
else
从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。

程序从主块开始执行,而下一个语句是
print 'Done'
语句。在这之后,Python看到程序的结尾,简单的结束运行

给C/C++程序员的注释
在Python中没有
switch
语句。你可以使用
if..elif..else
语句来完成同样的工作(在某些场合,使用字典会更加快捷。)

Demo:

number = 12

guess =int(raw_input('Enter int number'))

if number ==guess:

         print "success"

elif number> guess:

         print "lower"

else:

         print "higher"

print 'Done'      (不是必须)

 

 

While 语句

如果
while
循环有一个
else
从句,它将始终被执行,除非你的
while
循环将永远循环下去不会结束!

给C/C++程序员的注释
记住,你可以在
while
循环中使用一个
else
从句。

Demo:

number = 35

flag = True

while flag:

         guess= int(raw_input('Enter a number:'))

         ifguess == number:

                   print'success'

                   flag= False

         elifguess > number:

                   print'higher'

         else:

                   print'lower'

        

else:

         print'The while loop is over.'

        

print 'Done'

 

For语句

for..in是另外一个循环语句,它在一序列的对象上 递归 即逐一使用队列中的每个项目

else
部分是可选的。如果包含else,它总是在
for
循环结束后执行一次,除非遇到break语句

range(1,5)给出序列[1, 2, 3, 4]。默认地,range的步长为1。如果我们为range提供第三个数,那么它将成为步长。例如,range(1,5,2)给出[1,3]。记住,range 向上 延伸到第二个数,即它包含第二个数。

Deom:

for i in range(1, 5):
    print i
else:
    print 'The for loop is over'

 

Break语句

break
语句也可以在
for
循环中使用

 

Demo:

while True:

    s = raw_input('Enter something : ')
    if s == 'quit':
        break
    print 'Length of the string is', len(s)
print 'Done'

 

Continue语句

continue
语句对于
for
循环也有效

Demo:

whileTrue:

    s = raw_input('Enter a number:')

    if s == 'quit':

       break

    if len(s)<4:

       continue

    print 'length more than 4',s

 

函数:

int()  raw_input() range()  len()

函数通过def关键字定义。def关键字后跟一个函数的 标识符 名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体

 

Python中用global 声明全局变量。

 

DocStrings是一个重要的工具,称为 文档字符串

文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述

你可以使用
__doc__
(注意双下划线)调用
printMax
函数的文档字符串属性(属于函数的名称)

Demo:

defcompareMax(x,y):

   '''Two number compare max.

  

   which is higher'''

   x = int(x)

   y = int(y)

   if x > y:

      print x,'is higher'

   else:

      print y,'is higher'

     

     

compareMax(8,6)

print compareMax.__doc__

 

模块:

Demo:

import sys

print 'The command line arguments are:'

for i in sys.argv:

    print i

print '\n\nThe PYTHONPATH is', sys.path, '\n'

 

import语句 输入 sys模块。基本上,这句语句告诉Python,我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数

 

.pyc

输入一个模块相对来说是一个比较费时的事情,所以Python做了一些技巧,以便使输入模块更加快一些。一种方法是创建 字节编译的文件 ,这些文件以.pyc作为扩展名

 

from..import语句

如果你想要直接输入
argv
变量到你的程序中(避免在每次使用它时打
sys.
),那么你可以使用
from sys importargv
语句。如果你想要输入所有
sys
模块使用的名字,那么你可以使用
fromsys import *
语句。这对于所有模块都适用。

模块的__name__

每个Python模块都有它的
__name__
,如果它是
'__main__'
,这说明这个模块被用户单独运行,我们可以进行相应的恰当操作

制作自己的模块:
 使用import

Demo:

module1.py

def sayHi():

    print'This is module1'

version = '0.2'  

module2.py

import module1

module1.sayHi()

print 'Version:',module1.version

module1 和 module2 在同一个目录里

使用 from …. Import

Demo:

from module1 import sayHi,version

sayHi()

print 'Version:',version

 

在Python中有三种内建的数据结构——列表、元组和字典

列表:  [ ]

Demo:

shoplist =['apple','banana','mango']

 

print 'shoplistlength is',len(shoplist)

 

print 'These itemsare:',

for items inshoplist:

    print items,

   

shoplist.append('rice')

print '\nMyshopping list is now',shoplist

 

shoplist.sort()

print 'Sort,Myshopping list is now',shoplist

 

oldItem =shoplist[0]

del shoplist[0]

print 'I boughtthe',oldItem

print 'My shoppinglist is now',shoplist

所用到的:  for in  , append() ,sort(),del ,len()

我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符

我们使用列表的sort方法来对列表排序。需要理解的是,这个方法影响列表本身,而不是返回一个修改后的列表——这与字符串工作的方法不同。这就是我们所说的列表是 可变的 而字符串是 不可变的 。

元祖:  也是一个序列

元组和列表十分类似,只不过元组和字符串一样是 不可变的 即你不能修改元组

元组通过圆括号中用逗号分割的项目定义

一个空的元组由一对空的圆括号组成,如
myempty= ()


1个项目的元组  ============== singleton= (2 , )

必须在第一个(唯一一个)项目后跟一个逗号

Demo:

age = 22

name = 'Swaroop'

 

print '%s is %d years old' % (name, age)

print 'Why is %s playing with that python?'% (name,)

定制可以是
%s
表示字符串或
%d
表示整数

 

字典

键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。

记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。

字典是dict类的实例/对象。

Demo:

ab ={'i':'jly','do':'like','you':'qbw'}

 

print'ab length is %d' % len(ab)

 

ab['time']= 'half a year'

print'ab length is %d' % len(ab)

 

delab['time']

print'ab length is %d' %len(ab)

 

forname,address in ab.items():

         print '%s and %s' % (name,address)

        

if 'time'in ab:

         print 'love you %s' % ab['time']    

 

使用字典的
items()
方法,来使用字典中的每个键/值对

使用
in
操作符来检验一个键/值对是否存在,或者使用
dict
类的
has_key
方法

 

 

Python脚本 (没看懂)
Import  os
import  time
# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, use source = [r'C:\Documents', r'D:\Work'] orsomething like that
# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you willbe using
# 3. The files are backed up into a zip file.
# 4. The name of the zip archive is the current date and time
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. We use the zip command (in Unix/Linux) to put the files in a ziparchive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'BackupFAILED'

 

 

面向对象的编程  self

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。
给C++/Java/C#程序员的注释
Python中的self等价于C++中的self指针和Java、C#中的this参考。
意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数
Demo:
class Person:
   pass (我们使用了一个空白块,它由pass语句表示)
p = Person()
print p
 
Demo1:
class Student:
   def  say(self): (注意sayHi方法没有任何参数,但仍然在函数定义时有self)
      print 'Student say hello'
s = Student()
s.say()

__main__模块(双下划线)

输入/输出
raw_input和print语句
模式可以为读模式
('r')、写模式('w')或追加模式('a')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: