python之小技术积累

python3 md5加密

1、首先是获取要加密的一段字符串
new_str = str[0:len(str) - 1]
2、去创建md5对象
m = hashlib.md5()
3、调用对象中的方法update,生成加密字符串
m.update(new_temp)
4、获取加密后的字符串
sign = m.hexdigest()
import hashlib
def genearteMD5(str):
    # 创建md5对象
    hl = hashlib.md5()
    # Tips
    # 此处必须声明encode
    # 否则报错为:hl.update(str)    Unicode-objects must be encoded before hashing
    hl.update(str.encode(encoding='utf-8'))
    print('MD5加密前为 :' + str)
    print('MD5加密后为 :' + hl.hexdigest())

======================================================================================
python3之后没了raw_input()方法
函数的return语句只能返回一个值,可以是任意类型。返回一个tuple类型,间接达到返回多个值。

def test():
    a="aa"
    b=12
    return a,b
print(test())


=====================================================================================
if __name__ == "__main__"
通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')
if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
__name__是内置变量,可用于表示当前模块的名字。我们直接运行一个.py文件(模块)
=======================================================================================
以下等号内是我自己的一些理解:

python3有7中基本数据类型,每种数据类型都可以看作类对象;5种不可变类型(int/float/bool/String/Tuple)和2种可变类型(list/dict);

# int是不可变类型,a+=对变量a进行了变化处理
a = 10          # int不可变类型,a是变量,把int值10的地址赋给a
print(id(a))    # 打印变量a存储的int类型的地址
a += 20         # 这里,新建了一个int类型30,并且把30的地址赋给变量a。
                    # 而不是把10所在地址空间的int值10变为30
print(id(a))    # 打印变量a新存储的内存地址
print(id(10))   # 这个地址和第一个打印的地址相同,说明int类型是不可变的
print(id(30))   # 这个内存地址和第二个打印的地址相同,说明是新建了一个int对象30

========================================================================================
值传递和引用传递
python函数参数为不可变类型时,为值传递;为可变类型时为引用传递。
引用传递传递的是内存地址,修改后会改变内存地址对应储存的值。
====================================================
python参数传递既不是值传递也不是参数传递

def change(val):
    val.append(100)
    val = ['T', 'Z', 'Y']
nums = [0, 1]
change(nums)
print(nums)  # [0,1,100]

========================================================================================
python中的变量是没有类型的,我们可以把它看作一个(*void)指针,变量是可以指示任何对象的,而对象才是有类型的,python九种基本类型,int/float/bool/complex/str/list/tuple/dict/集合
Python中函数参数的传递是传递的变量的值,即就是变量所指向的对象的地址。 
一般的,我们有下面的规律: 
1. 不可变对象作为函数参数,相当于C系语言的值传递。 
2. 可变对象作为函数参数,相当于C系语言的引用传递。

nums = (1, 2, 3)
type(nums) #输出:tuple
id(nums) #输出:59179256
nums = [1, 2, 3] 
type(nums) #输出:list
id(nums) #输出:59094960

========================================================================================
python类型:数字类型、序列、键值对,字典的value可以是所有类型
不可变类型:一旦开辟内存空间存储数据,数据就不能修改。只要数据”更改“就会重新开辟内存空间,这里的数据“更改”只是一种读法,不会改变已存在内存空间中的不可变类型数据。不可变类型数据只要存在就会开辟内存空间,不必去给变量赋值就会开辟内存空间:

print(id(3))

开辟内存空间存储可变类型数据,list和dict,进行增删改查可以不用更改地址。可以自己写代码验证...

def test2(list):
    print(list,id(list))
    list.append(19)
    print(id(list))
    # return list
list=["s","zhi",3,4]
print(id(list))
test2(list)
print(list,id(list))
print("==================")
def test2(tuple):
    print(tuple, id(tuple))
    tuple=(11,22)
    print(tuple,id(tuple))
    # return list
tuple=(1,2,3,4)
print(id(tuple))
test2(tuple)
print(tuple,id(tuple))
print("=======================")
# ==============
def change(val):
    val.append(100)
    val = ['T', 'Z', 'Y']
nums = [0, 1]
change(nums)
print(nums)
# ***************************************
a=[1,2,3]
b=a
b[0]=4
print(a[0])

def func(list):
    list[0]=5
list=[1,2,3,4]
func(list)
print(list)


========================================================================================
局部变量和全局变量
       局部:
            1.局部变量就是写在 函数内部的变量
            2.局部变量不能在其他的范围内使用
            3.局部变量函数结束,自动被回收
            4.不同范围的局部变量,可以叫一样的名字,但是互不干扰
                
            
        全局:
            顶行定义的都是全局,所有的函数都可以使用
            总结:
            1.全局变量不能直接在局部修改,如果出现赋值语句,会被认为是在新建一个局部的变量,如果强行修改会报错 
            2.变量的访问的顺序:先找函数内部====>再找全局====>再没有就报错
            3.需要修改全局:用 global 变量
            4.全局变量的位置
                导包
                全局
                定义函数
                调用函数
            5.建议命名:g_变量名,gl_变量名
***********************************************************************************************************************************













 

猜你喜欢

转载自blog.csdn.net/shuzhikang/article/details/81430905