zoukankan      html  css  js  c++  java
  • Python学习手册(1入门知识-数据类型)

      UNIX env查找技巧

      在一些UNIX系统上,可以用这样一种方法避免硬编码Python解释器的路径,在文件的特定的第一行注释中写上这样一句话。

    #! usr/bin/env/ python
    ...script goes here

       这样写之后,env程序可以通过系统搜索路径的搜索设置(例如,在绝大多数的UNIX Shell中,通过搜索PATH环境变量中罗列的所有目录)定位Python解释器。这种方法可以使得代码具有更高的可移植性,因为没有必要在所有代码的第一行都硬编码Python解释器的安装位置。

      import 和 reload的使用注意事项

      你需要记住当调用reload时候需要使用括号,并且要记住让最新的代码运行时候,首先要使用reload。此外,reload是不可传递的,重载一个模块的话只会重载该模块,而不能够重载该模块导入的任何模块,因此有时候必须reload多个文件。由于这些复杂的地方,从现在开始就要避免使用import和reload启动程序,这是一个好主意。import和reload是Python中常用的测试方法,然而最好还是不要滥用。

      Python的核心数据类型

      对象类型    

      数字类型      整型,长整型,浮点型,复数类型  

      字符串       类似C语言的字符序列

      列表        [1,[2,'three'],4]

      字典        {'food':'Spam','taste':'yum'}

      元组        (1,'Spam',4,'U')

      文件        myfile = open('eggs', 'r')

      集合        set('abc'),{'a','b','c'}

      其他类型      None,bool

      编程单元类型    函数,模块,类,

      与实现相关的类型  编译的代码堆栈跟踪

      Python的数字类型包含:整数(无限精度),浮点数,十六进制、八进制、二进制,复数,集合,分数类型以及布尔类型和常亮类型。复数类型的虚部由j或J表示,八进制由0o或者0O前缀表示(第一个为zero,第二个为字母O)。

      关于字符串类型见:http://sebug.net/paper/python/ch04s03.html

      元组(tulpe)的不同之处在于,它一旦创建就无法改变。也就是说,元组是不可以改变的序列。与字典和列表一样,元组支持混合类型和嵌套。只有字典和列表是可变的类型。

      与C/C++不同的地方是,Python中没有switch语句,你可以使用if..elif..else语句来完成同样的工作(在某些场合,使用字典会更加快捷。)而且,Python在while语句中,你可以加入一个else语句!!!这一点跟C/C++也不同。

     

      Python的for循环从根本上不同于C/C++的for循环。C#程序员会注意到Python的for循环与C#中的foreach循环十分类似。Java程序员会注意到它与Java 1.5中的for (int i : IntArray)相似。

      在C/C++中,如果你想要写for (int i = 0; i < 5; i++),那么用Python,你写成for i in range(0,5)。你会注意到,Python的for循环更加简单、明白、不易出错。

      C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类)。然而,在Python语言中,运算符重载也可以适用于类。

      在Python中,变量的特点有:1变量在它第一次赋值时候被创建。2变量在表达式中使用时将会被替换为他们的值。3变量在表达式使用以前必须已赋值。变量像对象一样不需要再一开始进行声明(这完全不同于C/C++)。

      从技术上来说,默认的交互式回显和打印的区别就相当于内置的repr和str函数的区别:这两个函数都可以把任意对象变换层它们的字符串模式。repr(也就是默认的交互模式回显)产生的结构就好像它们是代码。str(也就是打印语句)转变为一种通常对用户更加友好的格式。

      Python的除法:在Python3.0和Python2.6中除法略有差异,X/Y在Python2.6或之前的版本中,这对操作整数会省掉小数部分,对于浮点数会保持小数部分。在Python3.0版本中,将会变成真除法(一直保留小数部分)。X//Y是 Floor除法,这个操作不用考虑对象的类型,总会省掉结果的小数部分而得到整数部分。

      在Python3.0中,任然使用内置函数来创建集合对象,但是也添加了新的集合常量形式,使用为字典所保留的花括号表示。在Python3.0中 set([1,2,3,4])和{1,2,3,4}是等同的。不管如何创建集合,Python3.0都使用新的常量格式来显示它。在Python3.0中,要创建的空集合或从已有的可迭代对象构建集合,都还是需要用到内置的set函数,但是新的常量便于初始化具有已知结构的集合。

      集合set是强大而灵活的对象,但是在Python3.0和Python2.6之中都有一个限制,我们要铭记,很大程度上市由于其实现,集合只能包含不可变(即可散列)的对象类型。因此,列表和字典不能嵌入到集合当中,但是如果你需要存储复合值的话,元组是一个可嵌入的。在集合操作中使用元组的时候,元组比较完整的值。集合本事也是不可改变的因此不能直接嵌入到其他集合当中。如果需要在另个集合中存储一个集合,可以像调用set一样来调用frozenset。但是它创建一个不可变集合,该集合不可修改并且可以嵌套在其他集合当中。Python3.0中引入集合解析构造,类似于列表解析构造。但是,编写在花括号中而不是方括号中,并且作用于集合而不是列表。另外Python字符串还支持分片和索引。。。

      Python字符串的特点,Python字符串与C语言不同,没有单个字符这种类型,取而代之的是可以使用一个字符的字符串。严格来说,Python的字符串被划分为不可变序列这一类别,意味着这些字符串包含的字符从左到右的位置顺序,而且它们不可以在原处被修改。除了核心的字符串工具外,Python通过标准库re模块(正则表达式)还支持更高级的基于模式的字符串处理,甚至是xml解析器等。

       一个Python新手有时候会像这样使用文件名去尝试打开一个文件: myfile = open('C: ew ext.dat','w')他们认为这将打开一个在C: ew目录下名字为text.dat的文件。问题是这里有" "和" ",它们会被识别为一个换行符号并且" "会被一个制表符所替代。解决这个问题的方法是,使用raw字符串。为了避免犯错,记得在Windows中增加字幕r在字符串前面。

      Python列表特点:

      列表的append方法和 "+"的结构类似,不同的是前者会原地修改列表而后者会生产型的列表。要注意,append和sort会在原地修改列表但是不会返回相关的列表对象,这两者返回值均为None。现在Python也可使用内置函数sorted它可以返回一个新的任何集合,并不只是列表。内置函数sorted有时候sort方法更有效。

      Python字典用法:

      使用字典的时候,有几点要注意:(1)序列运算无效。字典是映射机制不是序列。字典元素没有顺序概念,类似串联(有序合并)和分片(提取相邻片段)这样的运算是不能用的。(2)对新的索引赋值会添该新的加项。(3)键不一定总是字符串,任何不可变对象(也就是说不是列表)也是可以作为键值的。字典适合用作稀疏的数据结构!

      Python元组的用法:

      元组和列表非常类似,只不过元组不能再原处修改。虽然元组不支持任何方法调用,但是具有列表的大多数属性。元组是有序对象的集合,与列表相同可以嵌入到任何别的对象中。和列表字符串一样元组通过偏移(而不是键值)来访问。它支持所有基于偏移的操作。类似字符串,元组是不可变的。由于元组是不可变的,在不生成拷贝的情况下不能增长或者缩短,元组可以包含其他复杂类型,因此支持嵌套。

  • 相关阅读:
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    使用Jasmine和karma对传统js进行单元测试
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    nginx 基于IP的多虚拟主机配置
    Shiro 框架的MD5加密算法实现原理
    项目实战:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)
    实用技巧:阿里云服务器建立公网物联网服务器(解决阿里云服务器端口,公网连接不上的问题)
  • 原文地址:https://www.cnblogs.com/fangying7/p/4008319.html
Copyright © 2011-2022 走看看