美文网首页
第7课 函数及其进制位运算

第7课 函数及其进制位运算

作者: 遐迩_84a7 | 来源:发表于2017-04-25 17:47 被阅读0次

    局部变量,就是在函数内部定义的变量

    不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响

    局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用

    在函数外边定义的变量叫做全局变量

    全局变量能够在所有的函数中进行访问

    如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错(在其他函数中,只要用global进行了全局变量的说明,那么接下来在这个函数中使用这个变量的使用,就当做是一个全局变量来用)

    如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧强龙不压地头蛇

    匿名函数

    用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

    lambda函数的语法只包含一个语句,如下:

    lambda [arg1 [,arg2,.....argn]]:expression


    Lambda函数能接收任何数量的参数但只能返回一个表达式的值

    匿名函数不能直接调用print,因为lambda需要一个表达式

    函数使用注意事项

    1. 自定义函数

    <1>无参数、无返回值

            def 函数名():

            语句

    <2>无参数、有返回值

          def 函数名():

          语句

         return 需要返回的数值

    注意:

    一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据

    在开发中往往根据需求来设计函数需不需要返回值

    函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成

    <3>有参数、无返回值

         def 函数名(形参列表):

         语句

    注意:

    在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收

    参数列表中变量的个数根据实际传递的数据的多少来确定

    <4>有参数、有返回值

        def 函数名(形参列表):

        语句

       return 需要返回的数值

    <5>函数名不能重复

          2. 调用函数

    <1>调用的方式为:              函数名([实参列表])

    <2>调用时,到底写不写 实参

    如果调用的函数 在定义时有形参,那么在调用的时候就应该传递参数

    <3>调用时,实参的个数和先后顺序应该和定义函数中要求的一致

    <4>如果调用的函数有返回值,那么就可以用一个变量来进行保存这个值

    3. 作用域

    在一个函数中定义的变量,只能在本函数中用


    什么是进制

    1)理解个X进制的概念 :

    每一位 只允许出现 0~X-1 这几个数字,逢X进一,基是X, 每一位有一个权值大小是X的幂次。 其表示的数值可以写成按位权展开的多项式之和。

    如何表示二进制数的正负?

    3)有符号数和无符号数的概念

    规则:把二进制数中的最高位(最左边的那位)用作符号位

    对于有符号数,最高位被计算机系统规定为符号位(0为正,1为负)

    对于无符号数,最高位被计算机系统规定为数据位

    按照这种说法,比如有符号数 +2  -2 的原码形式:

    +2   =    0000 0000 0000 0010

    -2    =    1000 0000 0000 0010

    真值      机器数

    +1 = 0000 0000 0000 0001


    规则

    数字在计算机中,是用二进制补码的形式来保存的,因此-1 +1需要按照补码进行相加才是正确的结果

    2、原码、反码、补码

    1)如何计算补码?

    规则:

    正数:原码 = 反码 = 补码

    负数:反码 = 符号位不变,其他位取反                 补码 = 反码+1

    从补码转回原码

    负数补码转换原码的规则:

    原码 = 补码的符号位不变 -->数据位取反--> 尾+1

    <1>位运算的介绍

    & 按位与

    | 按位或

    ^ 按位异或

    ~ 按位取反

    << 按位左移

    >> 按位右移

    用途: 直接操作二进制,省内存,效率高

    1)<< 按位左移       各二进位全部左移n位,高位丢弃,低位补0

    x << n 左移 x 的所有二进制位向左移动n位,移出位删掉,移进的位补零

    【注意事项】

    a. 左移1位相当于 乘以2

    用途:快速计算一个数乘以2的n次方 (8<<3 等同于8*2^3)

    b.左移可能会改变一个数的正负性
    2)>> 右移

    各二进位全部右移n位,保持符号位不变

    x >> n x的所有二进制位向右移动n位,移出的位删掉,移进的位补符号位 右移不会改变一个数的符号

    右移1位相当于 除以2

    x 右移 n 位就相当于除以2的n次方 用途:快速计算一个数除以2的n次方 (8>>3 等同于8/2^3)

    3)   &     按位与

    全1才1否则0 :只有对应的两个二进位均为1时,结果位才为1,否则为0

    4)    |     按位或

    有1就1 只要对应的二个二进位有一个为1时,结果位就为1,否则为0

    5) ^ 按位异或

    不同为1 当对应的二进位相异(不相同)时,结果为1,否则为0

    6) ~ 取反

    ~9 =-10

    【扩展】

    1)任何数和1进行&操作,得到这个数的最低位 数字&1 = 数字的二进制形式的最低位

    2)位运算优先级

    数据类型转换

    1.常用的数据类型转换

    2. 进制转换

    <1>不同进制的书写方式

    八进制(Octal) 0o377

    十六进制(Hex) 0xFF

    二进制(Binary) 0b11111111

    <2>不同进制之间的转换

    python提供了三个内置的函数,可以用来在不同进制间做转换

    >>> oct(255), hex(255), bin(255)

    ('0o377', '0xff', '0b11111111')

    还可以使用int函数,把字符串转成数值

    >>> int('255'), int('0xFF', 16)     (16进制的意思)

    (255, 255)

    相关文章

      网友评论

          本文标题:第7课 函数及其进制位运算

          本文链接:https://www.haomeiwen.com/subject/wlyvzttx.html