【Python学习】URL编码解码&if __name__ == '__main__'
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Python学习】URL编码解码&if __name__ == '__main__',小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2668字,纯文字阅读大概需要4分钟。
内容图文
![【Python学习】URL编码解码&if __name__ ==](/upload/InfoBanner/zyjiaocheng/635/06319f503efe45f5ac169b1274a953d3.jpg)
一、URL编码解码
url的编码解码需要用到标准模块urllib中的parse方法
1 from urllib import parse 2 url = 'http://www.baidu.com?query=python基础教程 $%^&' 3 url_str = parse.quote_plus(url) # url编码 4 baidu_url = 'http%3A%2F%2Fwww.baidu.com%3Fquery%3Dpython%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B+%24%25%5E%26' 5 baidu_url_str = parse.unquote_plus(baidu_url) # url解码
二、if __name__ == '__main__'
Python不同于C/C++,程序并不需要执行主程序main()这样的程序入口,而是文件自上而下的编译执行。在很多Python程序中都会有下面这样的语句:
1 if __name__ == '__main__': 2 pass
这条语句的作用是判断这个Python文件是别的地方导入的还是直接运行的,一般是调试代码的时候使用,在它下面会写一些调试的代码。如果直接运行这个文件就会执行它下面的调试代码,如果通过其他文件导入这个文件执行,就不会运行它下面的调试代码,因为直接运行这个文件时,__name__的结果就是__main__,可以通过print(__name__)来验证。
三、练习
签名规则计算:
1、请求数据:vendorId=100&ip=127.0.0.1&Version=2.0&mac=D4-81-D7-CA-20-29
2、商家编码:vendorId
3、计算规则:
(1) 将商家编码(vendorId)进行2次md5加密,得到一个字符串Astr
(2) 再将请求数据进行一次urlDecode处理,得到一个字符串urlDecodeStr
(3) Astr+urlDecodeStr再进行一次md5加密获得最终的签名
1 from urllib import parse 2 import hashlib 3 class Sign(object): 4 def __init__(self,req_data): 5 self.req_data = req_data # 这写了self的话,在其他的函数里面也可以用self.xx 6 self.get_vendorId() # 构造函数中调用类里面的函数 7 self.get_sign() # 构造函数中调用类里面的函数 8 def my_md5(self,str): 9 md = hashlib.md5() 10 md.update(str.encode()) 11 return md.hexdigest() 12 def get_vendorId(self): 13 data_dic = {} 14 sub_str = self.req_data.split('&') 15 for i in sub_str: 16 data_dic[i.split('=')[0]] = i.split('=')[1] 17 self.vendorid = data_dic.get('vendorId') 18 def get_sign(self): 19 Astr = self.my_md5(self.my_md5(self.vendorid)) # 两次md5加密 20 urlDecodeStr = parse.quote_plus(self.req_data) # url编码 21 beforeMD5 = Astr + urlDecodeStr 22 self.sign = self.my_md5(beforeMD5) 23 return self.sign 24 25 if __name__ == '__main__': 26 # 请求数据: 27 s = 'vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20-29;' 28 # 实例化: 29 s_sign = Sign(s) 30 print(s_sign.get_sign()) # 构造函数里面如果没有调用,这里需要调用函数 31 print(s_sign.sign) # 构造函数里面如果已经调用了函数,这里可以直接用返回值
此时直接运行该文件的结果为:
afaa051aa024628edf92c85b66f3eefe afaa051aa024628edf92c85b66f3eefe
如果是以模块的形式导入运行该文件,则if __name__ == '__main__'下面的这几行代码不会执行
内容总结
以上是互联网集市为您收集整理的【Python学习】URL编码解码&if __name__ == '__main__'全部内容,希望文章能够帮你解决【Python学习】URL编码解码&if __name__ == '__main__'所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。