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

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

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

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

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

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

如果在函数中修改全局变量,那么就需要使用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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容