• Python 学习笔记 3.简单类型


    转载自:http://www.xwy2.com/article.asp?id=107

    Python 中的每样东西都是对象,不同与其他面向对象语言的是:

    第一,Python 中的所有数据值都被封装在相关对象类中。
    第二,Python 程序中的所有东西都是可以从程序访问的对象,即使是您编写的代码也不例外。

    Python 不包含像 int 这样的简单类型 —— 只有对象类型。如果 Python 中需要整数值,将整数赋值给相应变量(如 i = 100 )即可。在后台,Python 将创建一个整数对象,并将对新对象的引用赋值给变量。问题的关键是:Python 是一种动态类型化语言,所以无需声明变量类型。事实上在单个程序中,变量的类型是可以改变(多次)的。

    可以将 PyObject 类之下的所有 Python 类划分为 Python 运行时解释器可以使用的四个主要类别:
    1) 简单类型 —— 基本构建块,如 int 和 float。 
    2) 容器类型 —— 保存其他对象。 
    3) 代码类型 —— 封装 Python 程序的元素。 
    4) 内部类型 —— 程序执行期间使用的类型。 

    本次重点介绍简单类型。
    Python 有五个内置的简单类型:bool、int、long、float 和 complex。这些类型是不可变的,就是说整数对象一旦创建,其值便不可更改。相反,系统将创建新的简单类型对象并将其赋值给变量。通过 Python id 函数,可以查看基本 PyObject 标识的变更方式:

    整数 & 浮点数


    整数有两种,分别是 int 和 long。其中 int 最大值是 2147483647 (sys.maxint),而 long 长度仅受内存大小限制。

    Code
    >>>>>> a = 123
    >>>>>> b = 123L
    >>>>>> type(a)
    <type 'int'>
    >>>>>> type(b)
    <type 'long'>
    >>>>>>
    
    

    浮点数基本上也没有什么特别之处,不过要注意下面写法不同。

     

    Code
    >>>>>> a = 1
    >>>>>> b = 1.0
    >>>>>> type(a)
    <type 'int'>
    >>>>>> type(b)
    <type 'float'>
    >>>>>>
    
    

    和数字有关的函数有:


    1. abs(x) 取绝对值。

    Code
    >>>>>> abs(-123)
    123
    >>>>>>
    
    

    2. coerce(x, y) 将两个数字转换成相同类型。

    6. min(x [, y, z...]) 返回最小的一个数。

    Code
    >>>>>> min(3, 6, 9, 4, 1)
    1
    >>>>>>
    
    

    7. max(x [, y, z...]) 返回最大的一个数。

    Code
    >>>>>> max(3, 6, 9, 4, 1)
    9
    >>>>>>
    
    

    8. cmp(x, y) 比较数字。x > y 返回 1, x == y 返回 0, x < y 返回 -1。

    Code
    >>>>>> cmp(2,1)
    1
    >>>>>> cmp(1,1)
    0
    >>>>>> cmp(1,2)
    -1
    >>>>>>
    
    

    字符串


    Python 中没有字符(char)类型,而且和 C# 一样,字符串是不可以更改的。字符串可以使用单引号(')也可以使用双引号("),或者使用三引号使其跨越多行。

    Code
    >>>>>> s = '''xwy
    2
    .
    com
    '''
    >>>>>> s
    'xwy\n2\n.\ncom'
    >>>>>>
    
    

    字符串同样支持转义符。还记得 C# 字符串前面那个常用的 "@" 吗?Python 也有类似的东西,就是 "r"。

    Code
    >>>>>> s = r"c:\windows\notepade.exe"
    >>>>>> s
    'c:\\windows\\notepade.exe'
    >>>>>>
    
    

    比较有意思的是,Python 中的字符串支持使用乘号来创建一个连续字符串。如:

    Code
    >>>>>> s = "abc" * 6
    >>>>>> s
    'abcabcabcabcabcabc'
    >>>>>>
    
    

    尽管没有字符类型,但依然可以使用索引号来获取字符串中的字符。

    Code
    >>>>>> s = "abc"
    >>>>>> s[1]
    'b'
    >>>>>>
    
    

    Python 拥有非常方便的切片处理能力,我们可以使用负索引号从字符串结尾进行索引。

    Code
    >>>>>> s = "abcdefg"
    >>>>>> s[2:-1]
    'cdef'
    >>>>>>
    
    

    这里需要提一下,Python 比较古怪的多变量赋值方式。

    Code
    >>>>>> a,b,c=("xwy2",".","com")
    >>>>>> a
    'xwy2'
    >>>>>> b
    '.'
    >>>>>> c
    'com'
    >>>>>> a,b,c="123"
    >>>>>> a
    '1'
    >>>>>> b
    '2'
    c
    >>>>>> c
    '3'
    >>>>>>
    
    

    Python 同样支持格式化字符串,类似 C# 中的 String.Format。包括各种类型以及固定宽度输出。

    Code
    >>>>>> s = "str = [%-5s],int = [%05d],float = [%.2f]"%("a",5,3.1415)
    >>>>>> s
    'str = [a ],int = [00005],float = [3.14]'
    >>>>>>
    
    

    Python 使用如下方式支持 Unicode。

    Code
    >>>>>> s = u"abc"
    s
    >>>>>> s
    u
    'abc'
    >>>>>> type(s)
    <type 'unicode'>
    >>>>>> s += 'sss'
    >>>>>> s
    u
    'abcsss'
    >>>>>>
    
    

    和字符串相关的常用函数有:


    1. lstrip() / rstrip() / strip() 好像多数语言都命名为 LTrim() / RTrim() / Trim()。
    >>> " abc ".strip()
    'abc'

    2. expandtabs() 将 TAB 替换成指定数量的空格。

    Code
    >>>>>> "abc ".strip()
    'abc'
    >>>>>>
    
    

    3. lower() / upper() 大小写转换。

    Code
    >>>>>> "ABC".lower()
    'abc'
    >>>>>> "abc".upper()
    'ABC'
    >>>>>>
    
    

    4. swapcase() / title() / capitalize() 分别将全部字符,每单词首字符,短语首字符转成大写。

    Code
    >>>>>> "Xwy2.com".swapcase()
    'xWY2.COM'
    >>>>>> "xwy2.com".title()
    'Xwy2.Com'
    >>>>>> "xwy2.com".capitalize()
    'Xwy2.com'
    >>>>>>
    
    

    5. isxxxx 判断字符串... 没啥好说的。

    Code
    >>>>>> "xwy".isalpha()
    True
    >>>>>> "xwy2".isalnum()
    True
    >>>>>> "123".isdigit()
    True
    >>>>>> " ".isspace()
    True
    >>>>>> "AB".isupper()
    True
    >>>>>>
    
    

    6. find() 查找子串,类似的还有 index() / rindex() / rfind()。rxxx 表示找最后一个子串, index 在找不到时会触发异常。

    Code
    >>>>>> "abcdefg".find('d',1,-1)
    3
    >>>>>> "abcdefg".find('d',4, -1)
    -1
    >>>>>> "aaa1111aaa".rfind('aaa')
    7
    >>>>>> "aa1111aaa".index('b')

    Traceback (most recent call last):
    File
    "<pyshell#192>", line 1, in <module>
    'aa1111aaa'.index('b')
    ValueError: substring
    not found
    >>>>>>
    
    

    7. count() 统计子串数量。

    Code
    >>>>>> "Loong Tsui".count("o")
    2
    >>>>>>
    
    

    8. replace() 替换子串

    Code
    
    

    9. splite() 分解字符串。

    Code
    >>>>>> "a b c d".split(" ")
    [
    'a', 'b', 'c', 'd']
    >>>>>> "a b c".split(" ",2)
    [
    'a', 'b', 'c']
    >>>>>> "a b c d".split(" ",2)
    [
    'a', 'b', 'c d']
    >>>>>> "a b c d e".split(" ", 2)
    [
    'a', 'b', 'c d e']
    >>>>>>
    
    

    10. join() 连接字符串。

    Code
    >>>>>> "|".join(["a","b","c","d"])
    'a|b|c|d'
    >>>>>> "|".join(["首页","b","c","d"])
    '\xca\xd7\xd2\xb3|b|c|d'
    >>>>>>
    
    

    类型转换


    转换函数和多数编程语言类似。

    Code
    >>>>>> int("123")
    123
    >>>>>> long("123")
    123L
    >>>>>> float("123.45")
    123.45
    >>>>>> float(123)
    123.0
    >>>>>> float(123L)
    123.0
    >>>>>> ord("a")
    97
    >>>>>> chr(97)
    'a'
    >>>>>> hex(97)
    '0x61'
    >>>>>> str(123)
    '123'
    
    

    Code
    >>>>>> a = 1.0
    >>>>>> b = 2
    >>>>>> s = coerce(a,b)
    >>>>>> type(s)
    <type 'tuple'>
    >>>>>> s
    (
    1.0, 2.0)(1.0, 2.0)
    >>>>>>
    
    

    3. divmod(a, b) 获取商和余数。返回一个 tuple,如 (2, 1) 分别是商和余数。

    Code
    >>>>>> s = divmod(5,2)
    >>>>>> type(s)
    <type 'tuple'>
    >>>>>> s
    (
    2, 1)(2, 1)
    >>>>>>
    
    

    4. pow(x, y) 取幂,和 ** 操作符意义相同。

    Code
    >>>>>> 2 ** 3
    8
    >>>>>> pow(2,3)
    8
    >>>>>>
    
    

    5. round(x, [n]) 四舍五入

    Code
    >>>>>> round(3.1415926535897932,2)
    3.1400000000000001
    >>>>>> round(2.4567,2)
    2.46
    
    

  • 相关阅读:
    Promise推荐
    ES6推荐
    vue学习笔记之项目创建流程
    vue学习笔记之环境搭建
    前端知识小总结3
    前端知识小总结2
    JavaScript语言精粹の笔记
    JavaScript修炼之道の笔记
    移动端及vue相关问题
    组件式开发Web App
  • 原文地址:https://www.cnblogs.com/sislcb/p/1283919.html
Copyright © 2020-2023  润新知