当前位置: 首页 > news >正文

python3基础2--变量-字符编码-缩进-注释-用户输入-模块初识

一、python3 变量

1.1  声明变量
name = "python"

上述代码声明了一个变量,变量名为: name,变量name的值为:"python" 

变量定义的规则:

 

 变量名只能是 字母、数字或下划线的任意组合

 变量名的第一个字符不能是数字
 以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

小结:定义的变量名必须是直观易懂有意义的,不建议写中文名,

 

1.3 变量的赋值

name = "python3"
print(name)
names = name
print(names)

 

二、python3 字符编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

 

2.1 字符编码之中文编码-GB2312-GBK1.0-GB18030

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
  GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。GB2312 支持的汉字太少。

        GBK1.0(1995年)的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。

        GB18030(2000年)的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

    小结:由于ASCII在设计之初只考虑了,26个英文字母和特殊字符,导致中文以及其他一些国家的文字无法存储,就产生了中文编码。

  中文编码发展史:GB2312->GBK1.0->GB2312

2.2 字符编码之 Unicode编码

ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode(万国码)

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。

Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。
PS:此处说的的是最少2个字节,根据实际应用可能更多。

 

     小结:Unicode的产生是由于各国都有自己的编码,并且各国编码不兼容的问题,以及传统ASCII的局限性。
 
2.3 字符编码之 UTF-8编码
由于Unicode 编码在存储字节方面一般是占2个字节的,而英文只需要占一个字节就足够了,这样就产生了一个问题,如果都是英文存储用Unicode编码的话,会浪费很多磁盘空间,所以在Unicode编码之上又优化产生了UTF-8编码。
    UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。
 
    所以,在python2中python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文


#!/usr/bin/env python


print "你好,世界"


改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
print "你好,世界"
 
上述只适合于python2 版本,python3版本由于默认编码就是Unicode所以不会有中文乱码的情况。
 

三、python3 缩进-注释

3.1 python3 缩进
python2和python3 一个让人诟病的地方是格式的缩进问题。  
  为什么格式需要缩进处理?
第一,之所以缩进是因为层级之间有因果循环关系。
第二,之所以缩进是因为语法方面的开始结束代码段。
 
3.2 python3 注释
 
 当行注视:# 被注释内容
  多行注释:""" 被注释内容 """
 

四、python3 用户输入-模块初识

4.1 用户输入
4.1.1  明文密码输入。
username = input("please input usernane:")
password = input("please input password")
 
print(username,password)
 
4.1.2  密码不显示输入
import getpass
username = input("please input usernane:")
pwd  =  getpass.getpass( "请输入密码:" )
 
print(username,pwd)
 
4.2 模块初识
4.2.1  基础模块之:sys
import sys
sys.path 方法
sys.argv 方法
 
print(sys.path)  ###打印出ENV全局环境变量
 
print (sys.argv) ### 传递参数
 
4.2.2  基础模块之:os
print(os.system("df -h") ##查看操作系统磁盘使用情况
 

 

转载于:https://www.cnblogs.com/dong-python3/p/8329281.html

相关文章:

  • 【强烈推荐】Kindle3下使用的提供加密功能的记事本,可以输入中文 -- KindleNote...
  • PTGAN:针对行人重识别的生成对抗网络 | PaperDaily #36
  • SqlParameter的作用与用法
  • vue官方推荐的环境
  • managedwifi.codeplex.com
  • 微信小程序之 Swiper(轮播图)
  • 方丈被害子女有没有权利继承遗产?
  • js数组之filter
  • 故障处理记录--nginx反向代理显示不了部分图片
  • TCP通信粘包问题分析和解决
  • javascript笔记:自己写一个jqgrid框架(二)
  • eclipse编译器显示的文件名乱码,活动标签乱码(已解决)
  • Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月25日-7月1日)
  • 公式编辑器打的公式能改变颜色吗?
  • 7月1日我成为MVP啦
  • $translatePartialLoader加载失败及解决方式
  • 【5+】跨webview多页面 触发事件(二)
  • 0x05 Python数据分析,Anaconda八斩刀
  • 230. Kth Smallest Element in a BST
  • DOM的那些事
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • node.js
  • Redux系列x:源码分析
  • tab.js分享及浏览器兼容性问题汇总
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 三栏布局总结
  • 我从编程教室毕业
  • 小而合理的前端理论:rscss和rsjs
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一起参Ember.js讨论、问答社区。
  • ​configparser --- 配置文件解析器​
  • ​ubuntu下安装kvm虚拟机
  • ​学习一下,什么是预包装食品?​
  • #define 用法
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Java数据结构)ArrayList
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .CSS-hover 的解释
  • .NET Reactor简单使用教程
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net反混淆脱壳工具de4dot的使用
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .py文件应该怎样打开?
  • /*在DataTable中更新、删除数据*/
  • /bin/rm: 参数列表过长"的解决办法
  • ::before和::after 常见的用法
  • ;号自动换行
  • @ConditionalOnProperty注解使用说明
  • @synthesize和@dynamic分别有什么作用?
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory