python基础语法

这篇博客详细介绍了Python的基础语法,包括注释、数字类型、字符串、转义序列、缩进、循环结构、条件语句和内存管理。内容涵盖整数、浮点数、复数、字符串的表示方法,以及Python的进制转换、运算符、表达式和内存管理机制。此外,还讲解了if语句的真值表、循环中的while和for语句,以及continue和break的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,转载请注明本文链接。文章内容如有错误望能指正,以免误导更多人。

一、Python基础语法

  1. 注释:#标注的文本
  2. 数字
    • 整数
          python3开始不区分long和int,long被重命名为int,所有只有int
          进制0xa、0o10、0b10
          bool, 2个值True、False
    • 浮点数
          1.2、3.1415、-0.12,1.46e9等价于1.46*10³*10³
          本质上使用了C语言的double类型
    • 复数,1+2j
  3. 字符串
        使用’“单双引号引用的字符的序列
        ‘’'和”""单双三引号,可以跨行,可以其中自由的使用单双引号
        r前缀:在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
        f前缀:3.6版本开始,新增f前缀,格式化字符串
  4. 转义序列
        \ \t \r \n ’ "
        前缀r,把里面的所有字符当普通字符对待
  5. 缩进
        未使用C等语言的花括号,而是采用缩进的方式表示层次关系
        约定使用4个空格缩进
  6. 续行
        在行尾使用\
        如果使用各种括号,认为括号内是一个整体,内部跨行不用\
  7. 标识符
        1、一个名字,用来指代一个值
        2、只能是字母、下划线和数字
        3、只能以字母或下划线开头
        4、不能是python的关键字,例如def、class就不能作为标识符
        5、python是大小写敏感的
        约定:
        不允许使用中文
        不要使用歧义单词,例如class_
        在python中不用随便使用下划线开头的标识符
  8. 常量
        一旦赋值就不能改变值的标识符
        python中无法定义常量
  9. 字面常量
        一个单独的量,例如12、“abc”、‘2341356514.03e-9’
  10. 变量
        赋值后,可以改变值的标识符

二、Python的语言类型

  • Python是动态语言、强类型语言
  • 静态编译语言
        实现声明变量类型,类型不能再改变
        编译时检查
  • 动态编译语言
        不用事先声明类型。随时可以赋值为其他类型
        编程时不知道是什么类型,很难推断
  • 强类型语言
        不用类型之间操作,必须先强制类型转换为同一类型。print(‘a’+1)
  • 弱类型语言
        不同类型间可以操作,自动隐式转换,Javascript中console.log(1+‘a’)
    语言类型比较

三、Python的进制

  • 常见进制有二进制、八进制、十进制、十六进制。重点掌握二进制、十六进制

    十进制逢十进一;十六进制逢十六进一;二进制逢二进一

  • 转为十进制----按位乘以权累加求和
        0b1110计算为1 * 2 ** 3 + 1 * 2 ** 2 + 1 * 2 ** 1 + 0 * 2 ** 0 = 14
        0x41计算为4 * 16 + 1 * 1 = 65
  • 转为二进制
        0xF8按位展开即可,得到 0b1111 1000
        127除以基数2,直到商为0为止,反向提取余数
  • 转为十六进制
        127除以基数16,直到商为0为止,反向提取余数
    十六进制二进制

四、Python运算符Operator

  1. 算数运算符
        + - * / % **
        自然除/结果是浮点数,整除//。注:2.x中/和//都是整除

    •     %解释:
              格式为:a%b=c
              取模运算,结果的符号由第二个操作数b的符号决定,取模运算在计算c的值时,向负无穷方向舍入。
              1) 整数取模的数学定义:当a和b中存在负整数时,首先计算|a|%|b|=c,然后a%b的符号与b一致。也就是说,如果b>0,则a%b=c;如果b<0,则a%b=-c
          例如:
          整数中,当a>b时
        In [2]: 5 % 2
        Out[2]: 1
    
        In [3]: -5 % 2
        Out[3]: 1
    
        In [4]: 5 % -2
        Out[4]: -1
    
        In [5]: -5 % -2
        Out[5]: -1
    

        解释:

     5/2=2.55%2=5-(2*2)=1  
     -5/2=-2.5-5%2=-5-(-3*2)=1  
     5/-2=-2.55%-2=5-(-3*-2)=-1  
     -5/-2=2.5-5%-2=-5-(2*-2)=-1  
    

        整数中,当a<b时

        In [7]: 2 % 3
        Out[7]: 2
    
        In [8]: -2 % 3
        Out[8]: 1
    
        In [9]: 2 % -3
        Out[9]: -1
    
        In [10]: -2 % -3
        Out[10]: -2
    

        解释:

    2/3=0.62%3=2-(0*3)=2
    -2/3=-0.6-2%3=-2-(-1*3)=1
    2/-3=-0.62%-3=2-(-1*-3)=-1
    -2/-3=0.6-2%-3=-2-(0*-3)=-2
    

            2)浮点数取模的数学定义:对于两个浮点数a和b,a % b = a - n * b,其中n为不超过a / b的最大整数。
    浮点数中,当a<b时

        In [18]: 1.5%2.5
        Out[18]: 1.5
    
        In [19]: 1.5%-2.5
        Out[19]: -1.0
    
        In [20]: -1.5%2.5
        Out[20]: 1.0
    
        In [21]: -1.5%-2.5
        Out[21]: -1.5
    

        解释:

    1.5/2.5=0.61.5%2.5=1.5-(0*2.5)=1.5
    1.5/-2.5=-0.61.5%-2.5=1.5-(-1*-2.5)=-1.0
    -1.5/2.5=-0.6-1.5%2.5=-1.5-(-1*2.5)=1.0
    -1.5/-2.5=0.6-1.5%-2.5=-1.5-(0*-2.5)=-1.5
    

        浮点数中,当a>b时

    In [22]: 3.5%2.5
    Out[22]: 1.0
    
    In [23]: 3.5%-2.5
    Out[23]: -1.5
    
    In [24]: -3.5%2.5
    Out[24]: 1.5
    
    In [25]: -3.5%-2.5
    Out[25]: -1.0
    

        解释:

    3.5/2.5=1.43.5%2.5=3.5-(1*2.5)=1.0
    3.5/-2.5=-1.43.5%-2.5=3.5-(-2*-2.5)=-1.5
    -3.5/2.5=-1.4-3.5%2.5=-3.5-(-2*2.5)=1.5
    -3.5/-2.5=1.4-3.5%-2.5=-3.5-(1*-2.5)=-1.0
    
  2. 位运算符
    & | ~ ^ << >>

    • &:
          按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
          例如:
      9&8 = 8
      0000 1001  & 0000 1000 = 0000 1000
      In [26]: 9&8
      Out[26]: 8
      
    • |:
          按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1
      9&8 = 9
      0000 1001  & 0000 1000 = 0000 1001
      In [26]: 9|8
      Out[26]: 9
      
    • ~:
          按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1
          12, 0xc, 0o14, 0b1100
          ~12等于多少,为什么
      ~12
      In [32]: ~12
      Out[32]: -13
      0000 1100得出反码位为1111 0011,然后根据原码有效位得出补码位为1000 1101,负数最高加1,  
      得出最高位为1000,其余位不变取反后+1,得出1101,最后结果为1000 1101
      

    原码、反码、补码,负数表示法
    原码
    5=> 0b101, 1=> 0b1, -1 => -0b1, bin(-1)
    反码
    正数的反码与原码相同;负数的反码符号位不变其余按位取反
    补码
    正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1
    负数表示法
    早期数字电路的cpu中的运算器实现了加法器,但是没有减法器,减法要转换成加法
    负数在计算机中使用补码存储,-1的补码为1111 1111
    5-1=> 5+(-1)直觉上是0b101-0b1,其实计算机中是0b101 + 0b11111111,溢出位舍弃

    • ^:
          按位异或运算符:当两对应的二进位相异时,结果为1
      9^8 = 1
      0000 1001  ^ 0000 1000 = 0000 0001
      In [29]: 9^8
      Out[29]: 1
      
    • <<:
          左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
      9<<3 = 72
      0000 1001 = 0100 1000
      In [30]: 9<<3
      Out[30]: 72
      
    • >>:
          右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
      常用方式:乘除2的倍数,32//8相当于32 >> 3
      9>>2 = 2
      0000 1001  = 0000 0010
      In [31]: 9>>2
      Out[31]: 2
      
  3. 比较运算符
        == != > < >= <=
        返回一个bool值
        1<‘1’ 1==‘1’
        链式比较操作符
            4>3>2 4>mynumber>=1

  4. 逻辑运算符

    • 与或非 and or not
    • 短路运算符
          and如果第一个表示式为False,后面就没有必要计算了,这个逻辑表达式一定是False
          or如果第一个表示式True,后面没有必要计算了,这个逻辑表达式一定是True
  5. 赋值运算符
        a = min(3,5)
        += -= *= /= %=等
        x = y = z = 10

  6. 成员运算符
        in、not in

  7. 身份运算符
        is、is not

  8. 运算符优先级(由高到低)

    运算符描述
    ‘expr’字符串转换
    {key:expr,…}字典
    [expr1,expr2…]列表
    (expr1,expr2…)元组
    function(expr1,…)函数调用
    x[index:index]切片
    x[index]下标索引取值
    x.attribute属性引用
    ~x按位取反
    +x, -x正, 负
    x**y
    x*y, x/y, x%y乘, 除, 取模
    x+y, x-y加,减
    x<<y, x>>y移位
    x&y移位与
    x^y按位异或
    xy
    x<y, x<=y, x==y, x!=y, x>=y, x>y比较
    x is y, x is not y等同测试
    x in y, x not in y成员判断
    not x逻辑否
    x and y逻辑与
    x or y逻辑或
    lambda arg,…:exprLambda匿名函数

    算法运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
    单目 > 双目
    记不住,用括号
    长表达式,多用括号,易懂、易读

五、表达式Expression

  • 由数字、符号、括号、变量等的组合
        算法表达式
        逻辑表达式
        赋值表达式
            Python中,赋值即定义,如果一个变量以及定义,赋值相当于重新定义

六、内存管理

  1. 变量无须事先声明。也不需要指定类型,这是动态语言的特性
  2. Python编程中一般无须关心变量的存亡,一般也不关心内存的管理
  3. Python使用引用计数记录所有对象的引用数
    • 当对象引用数变为0,它就可以被垃圾回收GC
    • 计数增加:
          赋值给其它变量就增加引用计数,例如x=3;y=x;z=[x,1]
          实参传参,如foo(y)
    • 计数减少:
          函数运行结束时,局部变量就会被自动销毁,对象引用计数减少
          变量被赋值给其他对象。例如x=3;y=x;x=4
  4. 有关注性能的时候,就需要考虑变量的引用问题,但是该释放内存还是尽量不释放内存,看需求
  5. 查看引用计数
    In [54]: import sys
        ...: a=['lllll']
        ...: b=a
        ...: c=b
        ...:
        ...: print(sys.getrefcount(a))
    4
    

七、if语句

1、真值表

对象/常量
“”
“string”
()
>=1
<=-1
()空元组
[]空列表
{}空字典
None
  • False等价布尔值,相当于bool(value)
    1)空容器
        空集合set
        空字典dict
        空列表list
        空元组tuple
    2)空字符串
    3)None对象
    4)0

2、单分支结构

  • if语句
    if condition:  
        代码块  
    condition必须是一个bool类型,这个地方有一个隐式转换bool(condition)  
    if 1<2: #if True:  
        print('1 less than 2') 
    
  • 代码块
        类似于if语句的冒号后面的就是一个语句块
        在if、for、def、class等关键字后使用代码块

3、多分支结构

if...elif...else语句  
    if condition1:  
        代码块1  
    elif condition2:  
        代码块2  
    elif condition3:  
        代码块3  
    ......  
    else:  
        代码块  

4、分支嵌套

  • 嵌套结构,可以是分支、循环的嵌套
  • 可以互相嵌套多层
  • 多分支结构,只要有一个分支被执行,其他分支都不会被执行
  • 前一个条件被测试过,下一个条件相当于隐含着这个条件
    举例:

5、练习题:

  • 输入2个数字,输出最大数
      num = int(input("Please input number:"))
    
      if num <= 80:
          print('very good')
      elif num < 60:
          print('good')
      else:
          print('not good')
    
  • 给定一个不超过5位的正整数,判断其有几位
      x=int(input("Please input number:"))
      if x >= 1000:
          if x >= 10000:
              print("x >= 10000")
          else:
              print("x >= 1000")
      elif x >= 10:
          if x >= 100:
              print("x >= 100")
          else:
              print("x >= 10")
      else:
          print("x < 10")
    
  • 使用input函数
    input函数获取键盘输入input([prompt]),返回一个输入的字符串
    In [59]: input("Please input number:")
    Please input number:100
    Out[59]: '100'
    
  • int函数
    把给定类型的数值转换为整数
    In [60]: num='100'
    
    In [61]: type(num)
    Out[61]: str
    
    In [62]: num1=int(num)
    In [63]: num1
    Out[63]: 100
    
    In [64]: type(num1)
    Out[64]: int
    

八、循环–while语句

  • 语法
        while condition:    
            block  

    当条件满足即condition为True,进入循环体,执行block

  • 举例:
        flag=10  
        while flag:  
            print(flag)  
            flag -= 1

    执行结果是什么?
        顺序打印10-1数字
    如果flag=-10可以吗?如何改造?

        flag = -10
        while flag:
            print(flag)
            flag += 1

九、循环–for语句

  • 语法
        for element in iterable:  
            block  

    当可迭代对象中有元素可以迭代,进入循环体,执行block

  • 举例:
        for i in range(10,0,-1):
            print(i)

十、循环 continue语句

    中断当前循环的当次执行,继续下一次循环

  • 举例: 计算10以内的偶数(for循环)
        for i in range(0,10,2):
            print(i)

        for i in range(0,10):
            if i % 2:
                continue
            else:
                print(i)

十一、循环 break语句

    终止当前循环

  • 举例:计算1000以内的正整数被7整除的前20个数(for循环)
        count = 1
        for i in range(7,1000,7):
            print(i)
            if count == 20:
                break
            count +=1

        count = 0
        for i in range(7, 1000):
            if not i % 7:
                print(i)
                count += 1
            if count == 3:
                break

循环continue、break语句总结
1) continue和break是循环的控制语句,只影响当前循环,包括while、for循环
2) 如果循环嵌套,continue和break也只影响语句所在的那一层循环
3) continue和break不是跳出语句块,所以if cond: break不是跳出if,而是终止if外的break所在的循环

十二、循环 else子句

语法

    while condition:  
        block  
    else:  
        block  
      
    for element in iterable:  
        block  
    else:  
        block  

如果循环正常的执行结束,就执行else子句,即使循环都没有进去
如果使用break终止,else子句不会执行

十三、练习

  1. 给定一个不超过5位的正整数,判断该数的位数,依次打印出万位、千位、百位、十位、个位的数字。

  2. 给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值