01Python学习之《Python基础教程第三版》

Python学习之《Python基础教程第三版》

第一章 基础知识

1.1 运算符

# 加法运算
>>> 2+2
4
# 减法运算
>>> 3-1
2
# 乘法运算
>>> 2*3
6
# 除法运算,默认返回浮点型
>>> 4/2
2.0
>>> 2/3
0.6666666666666666
# 除法运算,两个整数去小数位
>>> 2//3
0
>>> 4//2
2
# 除法运算,有浮点型则返回浮点型
>>> 1//0.2
4.0
# 幂运算
>>> 2**3
8
>>> -3**2
-9
>>> (-3)**2
9
# 取模运算,即取余数
>>> 3%2
1
>>> 2%3
2

1.2 进制转换

# 二进制 b为字母,其余都是数字 结果为2的3次方
>>> abin=0b1000
>>> abin
8
# 八进制 首位数字0,后面字母o,接着数字12 结果为8的1次方加2
>>> aoct=0o12
>>> aoct
10
# 十六进制 首位数字0,后面字母x,接着字母A
>>> ahex=0xA
>>> ahex
10
>>> a=10
>>> a
10

1.3 变量(variable)

​ 在Python中,名称(标识符)只能由字母、数字和下划线(_)构成,且不能以数字打头。 因此Plan9是合法的变量名,而9Plan不是。

>>> _a_ = 1
>>> _b_12 = 12
>>> 1_c = 13
  File "", line 1
    1_c = 13
     ^
SyntaxError: invalid token

1.4 语句

​ 表达式是一些东西,而语句做一些事情。例如,2 * 2的结果是4,而print(2 * 2)打印4。表达式和语句的行为很像,因此它们之间的界线可能并非那么明确。

Python常用的表达式操作符:
    算术运算符:
        x+y, x-y, x / y, x*y, x // y, x%y
    比较运算符:
            x>y, x<y, x>=y, x<=y, x==y, x!=y
    逻辑运算符:
            x or y, x and y, not x
    成员关系运算:
            x in y, x not in y
    对象实例测试:
            x is y, x not is y
    位运算:
            x & y, x | y, x ^ y, x<<y, x>>y
    一元运算:
            -x,+x,~x(按位取反)
    幂运算:
            x ** y
    索引、分片(对于序列):
            x[i], x[i,j], x[i,i,stride]
    调用(对于可调用对象):
            x(...)
    取属性:
            x.attribute
    元组:(...)
    序列:[...]
    字典:{...}
    三元选择表达式:
            expression if boolean_expression else expression2
    匿名函数:lambda args:expression
    生成器函数发送协议:yield x

运算优先级:
    (..,[...],{...}
    s[i],s[i.j]
    s.attribute
    s(...)
    +x,-x,~x
    x ** y
    *,/,//,%
    +,-
    <<,>>
    &
    ^
    |
    <,<=,>,>=,==,!=
    is,not is
    innot in
    not
    and
    or
    lambda
语句:
    赋值语句
    调用
    print:打印对象
    if/elif/else:条件判断
    for/else:序列迭代
    while/else:普通循环
    pass:占位符
    break
    continue
    def
    return
    yield
    global
    raise:手动触发异常
    import
    from:模块属性访问
    class
    try/except/finally
    del:删除引用
    assert:调试检查
    with/as:环境管理器    
赋值语句:
    隐式赋值:importfromdefclassfor, 函数参数
    元组和列表分解复制:当赋值符号(=)的左侧为元组或列表时,Python会按照位置吧右边的对象和左边的目标自左向右追忆进行配对:个数不同是出触发异常,此时可以切片的方式进行;
    多重目标复制:n1=n2=n3=88
    增强赋值:+=-=*=/=//=,%= 效率较高

##五、获取输入

>>> x = input('x:')
x:10
>>> y = input('y:')
y:11
>>> print(int(x) * int(y))
110

1.5 函数

内置函数:即无需import即可使用的函数,并可以通过如下命令来进行获取

# 通过以下命令可以查看python的内置函数
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']

自定义函数:def 即define的意思,接函数名不可使用数字开头只能以,下划线 or 字母开头,and 字母数字来组合命名。

>>> def funtest(a,b):
...     print(a * b)
...
>>> funtest("*",10)
**********

1.6 注释

Python中使用 #符号来进行文档的注释功能

1.7 字符串

Python中字符串的表示方法有三种

  • 使用单引号 ‘’

  • 使用双引号""

  • 使用三引号""”""

    如果要在字符串中使用 单引号/双引号此特殊字符时,可以这种表示方式

    “This’s an apple!”

    “”"

    She says:“Peter’s Dad is a doctor!”

    “”"

    >>> s1 = "This's an apple!"
    >>> s2 = """
    ...
    ... She says:"Peter's Dad is a doctor!"
    ...
    ... """
    >>> print(s1)
    This's an apple!
    >>> print(s2)
    
    
    She says:"Peter's Dad is a doctor!"
    

1.7.1 字符串表示str和repr

实际上str代表的是一个类,而repr是一个函数

>>> s = "hell\nworld"
>>> print(s)
hell
world
>>> print(repr(s))
'hell\nworld'

1.7.2 长字符串

一般长字符串使用三引号来表示一段长字符,当然,可以使用\来进行换行表示

>>> s = "abc\
... defg"
>>> print(s)
abcdefg
>>> ss = '''
... hello
... world
... '''
>>> print(ss)

hello
world

1.7.3 原始字符串

当如果遇到一个字符串 s= "c:\new\python"时,此时需要使用r关键字来进行获取原始字符串,或者通过\来转义

>>> s1 = "c:\new\python"
>>> print(s1)
c:
ew\python

>>> s2 = r"c:\new\python"
>>> print(s2)
c:\new\python
  
>>> s3 = "c:\\new\\python"
>>> print(s3)
c:\new\python

1.7.4 unicode bytes bytearry

Python字符串使用unicode编码来表示。Python将文本写入文件或通过网络套接字发送出去,提供两种类型:bytes 表示字节序列,是一个不可变的数据类型。
bytearray 表示字节数组,是一个可变的数据类型。

>>> "中国China".encode("utf-8")
b'\xe4\xb8\xad\xe5\x9b\xbdChina'

>>> "China".encode("ascii")
b'China'

>>> "中国China".encode("ascii")
Traceback (most recent call last):
  File "", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
  
>>> "中国China".encode("utf-32")
b'\xff\xfe\x00\x00-N\x00\x00\xfdV\x00\x00C\x00\x00\x00h\x00\x00\x00i\x00\x00\x00n\x00\x00\x00a\x00\x00\x00'

>>> len("China".encode("utf-8"))
5
>>> len("China".encode("ascii"))
5
>>> len("China".encode("utf-16"))
12

>>> x = bytearray(b"hello")
>>> x[1] = ord(b"中")
  File "", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> x[1] = ord(b"P")
>>> x
bytearray(b'hPllo')
>>> x.decode()
'hPllo'

第二章 列表与元祖

在Python中,最基本的数据结构为序列(sequence)。列表与元祖不同的是,列表是可修改的而元祖是不可修改的。几乎所有的场景中,列表都是可替代元祖处理。唯独一种情况,元祖作为字典键值时,禁止使用列表。毕竟,列表是可修改的数据。

你可能感兴趣的:(Python)