局部变量,就是在函数内部定义的变量
不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用
在函数外边定义的变量叫做全局变量
全局变量能够在所有的函数中进行访问
如果在函数中修改全局变量,那么就需要使用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)
网友评论