zoukankan      html  css  js  c++  java
  • 深入Python(一)

     Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)

    静态类型语言

    一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java 和 C 是静态类型语言。

    动态类型语言

    一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。

    强类型语言

    一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。

    弱类型语言

    一种类型可以被忽略的语言,与强类型相反。VBScript 是弱类型的。在 VBScript 中,您可以将字符串 '12' 和整数 3 进行连接得到字符串'123',然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。


    当导入一个模块时,Python 在几个地方进行搜索。

    明确地,它会对定义在 sys.path 中的目录逐个进行搜索。它只是一个list (列表),您可以容易地查看它或通过标准的list方法来修改它。

    >>> import sys                 

    >>> sys.path                  

     ['', '/usr/local/lib/python2.2', '/usr/local/lib/python2.2/plat-linux2','/usr/local/lib/python2.2/lib-dynload', '/usr/local/lib/python2.2/site-packages','/usr/local/lib/python2.2/site-packages/PIL', '/usr/local/lib/python2.2/site-packages/piddle']

    >>> sys                        

    <module 'sys' (built-in)>>>> sys.path.append('/my/new/path') 

    在运行时,通过向 sys.path 追加目录名,就可以在 Python 的搜索路径中增加新的目录,然后当您导入模块时,Python 也会在那个目录中进行搜索。这个作用在 Python 运行时一直生效。

    Python 将搜索这些目录 (按顺序) 来查找一个与您正试着导入的模块名相匹配的 .py 文件。

    但不是所有的模块都保存为 .py 文件。有一些模块 (像 sys),是“内置模块”,它们实际上是置于Python 内部的。内置模块的行为如同一般的模块,但是它们的 Python 源代码是不可用的,因为它们不是用 Python 写的!(sys 模块是用 C 写的。)
    在 Python 中一切都是对象,字符串是对象。列表是对象。函数是对象。甚至模块也是对象。

    sys 模块是一个对象,它有一个叫作 path 的属性;等等。


    (字典)Dictionary 的值可以是任意数据类型,包括字符串、整数、对象,甚至其它的 dictionary。在单个 dictionary 里,dictionary 的值并不需要全都是同一数据类型,可以根据需要混用和匹配。

    Dictionary 的 key 要严格多了,但是它们可以是字符串、整数或几种其它的类型。


    extend (扩展) 与 append (追加) 的差别

    >>> li = ['a', 'b', 'c']

    >>> li.extend(['d', 'e', 'f'])

     >>> li['a', 'b', 'c', 'd', 'e', 'f']

    extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中

    >>> li = ['a', 'b', 'c']

    >>> li.append(['d', 'e', 'f'])

     >>> li['a', 'b', 'c', ['d', 'e', 'f']]

    append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部
    在 list 中搜索

    >>> li=['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

    >>> li.index("new")    

     2

    index 在 list 中查找一个值的首次出现并返回索引值

    从 list 中删除元素

    >>> li=['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

    >>> li.remove("z")

    >>> li['a', 'b', 'mpilgrim', 'example', 'new', 'two', 'elements']

    remove 从 list 中删除一个值的首次出现
    >>> li.pop()         
    'elements'
    pop 是一个有趣的东西。它会做两件事:删除 list 的最后一个元素,然后返回删除元素的值

    使用 list 的运算符
    >>> li = ['a', 'b', 'mpilgrim']
    >>> li = li + ['example', 'new'] 
    >>> li
    ['a', 'b', 'mpilgrim', 'example', 'new']
    Lists 也可以用 + 运算符连接起来。list = list + otherlist 相当于 list.extend(otherlist)。但 + 运算符把一个新 (连接后) 的 list 作为值返回,而 extend 只修改存在的 list。也就是说,对于大型 list 来说,extend 的执行速度要快一些。
    >>> li += ['two']                
    >>> li
    ['a', 'b', 'mpilgrim', 'example', 'new', 'two']
    Python 支持 += 运算符。li += ['two'] 等同于 li.extend(['two'])
    >>> li = [1, 2] * 3              
    >>> li
    [1, 2, 1, 2, 1, 2]
    * 运算符可以作为一个重复器作用于 list。li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2]

    (元组)Tuple没有方法
    Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。
    Dictionary key 必须是不可变的。Tuple 本身是不可改变的,Tuple 可以在 dictionary 中被用做 key,但是 list 不行。
    Tuple 可以转换成 list,反之亦然。内置的 tuple 函数接收一个 list,并返回一个有着相同元素的 tuple。而 list 函数接收一个 tuple 返回一个 list。
  • 相关阅读:
    OpenGL------光照+染色
    sicily 1345 能量项链
    sicily 1193 Up the Stairs
    sicily 1172 Queens, Knights and Pawns
    sicily 1206 Stacking Cylinders
    模拟退火算法解tsp问题
    js对象的属性可以是一个变量
    vue中/deep/的使用
    MySQL中DATEDIFF函数使用
    js中的this
  • 原文地址:https://www.cnblogs.com/hanmeimei/p/python7.html
Copyright © 2011-2022 走看看