python学习笔记——杂乱篇

1.python每一行结束后不需要加分号,解释器根据行来区别句子。


2.在python中,^表示异或位运算,** 表示幂运算


3.标识符,以下划线开头是具有特殊意义的,以单下划线开头代表不能直接访问的类属性,不能用 from xxx import 导入;双下划线开头的代表类的


私有成员;以双下划线开头和结尾的,代表python里面特殊方法的专用标识,如__init__()代表类的构造函数。

路径介绍

1.在python用import或者from...import来导入相应的模块。使用import时,需要在函数名前加上模块名作为前缀,但是使用from..import时,不需

要加模块名。

2.模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我

们就可以使用了。

3.这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。

搜索路径

Python会在以下路径中搜索它想要寻找的模块:

1. 程序所在的文件夹

2. 标准库的安装路径

3. 操作系统环境变量PYTHONPATH所包含的路径

  
  
import sys
print ( '================Python import mode==========================' );
print ( 'The command line arguments are:' )
for i in sys . argv :
print ( i )
print ( '\n The python path' , sys . path )
from sys import argv , path # 导入特定的成员
print ( '================python from import===================================' )
print ( 'path:' , path ) # 因为已经导入path成员,所以此处引用时不需要加sys.path
#如果你要使用所有sys模块使用的名字,你可以这样:
from sys import *
print ( 'path:' , path )

4.代码块不使用{}来控制类、函数以及其他逻辑判断,使用缩进来写模块,缩进的空白数是可变的,但是同一语句块中的所有的代码块语句必须包含

相同的缩进空白数量。

5.可以使用斜杠 \ 将一行的语句分为多行。如果包含括号、中括号、大括号,就不需要使用多行连接符

1
2
3
4
print 'line1'\
      'line2'
print 'line3'
'line4'

结果

6.input函数和raw_input函数

这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。


 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合

法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 

 raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型

( int, float );同时在例子 1 知道,input() 可接受合法的 python 表达式,举例:input( 1 + 3 ) 会返回 int 型的 4

 input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参

数,并且它会计算表达式的值并返回它。

 不过在 Built-in Functions 里有一句话是这样写的:Consider using the raw_input() function for general input from users.

 除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

看到了http://www.w3cschool.cc/python/python-basic-syntax.html  等待用户输入 


7.复合语句,像if while def class 这样的复合语句,首行以关键字开始,以冒号 : 结束。

8.变量赋值,在python中不需要在声明变量时确定变量的类型,变量的声明和赋值是一起进行的,这个和JS中的变量var有点相似,只不过不需要在

变量名前加var(或者类似的关键字)。只有变量赋值后,该变量才会被创建。我理解变量名就是不同类型对象的索引,只是一个索引。

变量可以这样赋值,多个变量赋值:

9.python中的五个基本的数据类型

    -1.Numbers类型

数据类型是不允许改变的,改变了数字数据类型的值,相当于重新分配了内存空间。

使用del关键字来删除数字引用,删除多个对象时,用逗号分隔。

  
  
del var1 [, var2 [, var3 ]]

支持四种不同的数值类型

    整型(Int)、长整形(long integers):无限大小的整数,用字母L或者l来结尾、浮点型(float):可以用整数.整数来表示,也可以用科学计数法

来表示、复数(complex):虚部以i或者j来结尾,例如 1+2i或者complex(a,b),复数的实部虚部都是浮点型。

拥有很多类型转换函数、随机数相关函数、数学类函数、三角函数等...

    -2.String类型

python的字符串用单引号或者双引号包裹,没有单字符类型,单个字符也当是一个字符串。

字符串引用可以当做一个数组来使用,索引出单字符或者一段子串

操作符 in (not in 类似)

原始字符串,所有的字符串都是直接按照字面的意思上来使用,没有转义特殊或不能打印的字符,原始字符串除了在字符串的第一个引号前加上字母

 r (可以大小写)以外,与普通字符串有着相同的语法,注意字符串的最后一个字符不能是反斜线 \ ,这样的话解释器就不知道是否是这个字符串的

结尾。这个语法在使用正则表达式时候很有用。

三引号的使用:三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符

比如\n和\t都会被保留,这样的好处是你可以替换一些多行的文本。当需要一块sql或者html时,特殊字符的转义将很麻烦。可以是三个单引号,也可

是三个双引号。

定义一个unicode字符串

  
  
u 'Hello world!'
* 加在字符串之后表示重复操作
   
   
>>> print 'hello ' * 3
#hello hello hello
list变量转换为str类型的变量的方法:

    ''.join(list) 

    join函数的用法:
        
        意思就是说,join方法的参数应该是一个可被迭代的对象,返回值是string类型,内容是实参中被迭代后元素生成的一个字符串,每个元素之间以

str为分隔符来分隔
        
    -3.list数据类型

列表的元素类型可以不同

  
  
a = [ 1 , '2' , 3.3 ]

获取列表元素的方法:

    通过下标索引,和其他语言的数组一样。

    通过在中括号中使用 : 来截取列表

    通过python的内建方法来获取

注意,列表的的元素可以正向索引,第一个元素的下标是0,也可以反方向索引,最后一个元素的索引是-1,-2...-len(a)

  
  
a = [ 1 , 2 , 3 , 4 , 5 ]
# a[0] == a[-5]
# ...
# a[4] == a[-1]

+ 用于连接列表,* 用于重复列表

    -4.python元组 tuple

不同于list的是:

    用()来包裹元素;

    元素不能二次赋值(list可以),相当于只读列表;

    由于上一条可以推出,元组的元素是不能单独使用del语句的

任意无符号的对象,以逗号隔开,默认为元组

  
  
print '123' , 123 , "xyz" , 1.234

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来。

我们知道定义一个空的元组是这样的

   
   
t = ()
但是定义只有一个元素的元组这样定义么?

括号既可以表示tuple,也可以表示数学公式中的小括号,这样就产生了歧义,在这种情况下,按小括号进行计算,计算结果自然是1。因此,规定,只有一个元素的tuple定义时

必须添加一个逗号来消除歧义。

   
   
t = (, 1 )
利用这个特性,可以做出来可变的tuple
    
    
t = ( 'a' , 'b' , 'c' ,[ 'd' , 'e' ])
t [ 3 ][ 0 ] = 'f'
t [ 3 ][ 1 ] = 'g'
print t # ('a','b','c',['f','g'])
理解这个“不可变”,用指针的概念理解,一个对象(变量)在存储空间中的两个值:所在地址的值和对象(变量)的值。不可变的是这个指针指向

的地址,地址的值不可变,而这个地址上的元素的值则要根据具体类型来分析了,上面的这个元素是列表,列表的内容是可变的,so...

    -5.字典

我感觉字典和java中的map类很类似,由键和值组成,由花括号包裹内容。键必须独一无二,必须是不可变对象,数字、字符串、tuple、frozenset

等等,值可以是任意可hash化的对象。

    hash是一种函数映射,称为hash函数,y=hash_func(x),可hash就是指对于一个对象x有其对应的y。在python内部是通过字典key的hash值来对应内存中的value地址

的,所以两个相同hash的key就表示同一个了,而不可hash的对象自然也不能作为字典的key。


10. print格式化输出 以 % 为分隔格式化字符串与参数(集合)

http://www.w3cschool.cc/python/python-variable-types.html

11.python基础教程  让脚本像普通程序一样运行

在类unix系统中,在脚本的第一行 #!/user/bin/env python 就可以直接运行PYTHON脚本,而不许要显示的使用python解释器。

简单的说就是 以前要 python hello.py ,现在直接hello.py即可。

原理解释:

#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;

#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里

查找python的安装路径,再调用对应路径下的解释器程序完成操作。

12.repr()函数,创建一个字符串,以合法的Python表达式的形式来表示值

实质上是两种值被转换为字符串的机制,一是通过str函数str(),会把值转换为合理形式的字符串,二就是通过repr函数了。

13.和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和

传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变

对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

python一般内部赋值变量的话,都是传个引用变量,和C语言的传地址的概念差不多。可以用id()来查询内存地址
 
如果a=b的话, a和b的地址是相同的;如果只是想拷贝,那么就得用 a=b[:]。

************************未完 2014年12月26日17:56:06*************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值