Python-02 ~ 基础01-基础语法

今天的内容主要是学习Python之前的一些不同于其他语言的基础,来吧,我们一起

一、Python简要

  1. 特性
    • Python是一门动态语言(这点和Swift类似),声明变量的时候,我们只需要赋值即可,不需要关心数据类型,Python会自动的判断其数据类型
    • Python没有其他语言的{}标记代码块,使用:+Tab缩进方式表示代码块
  2. 交换两个变量的值
    • 在一般的语言中交换两个变量的值需要3条语句,而在Python中一条语句即可完成
      a = 1
      b = 2
      # 交换
      a, b = b, a
      
  3. 获取变量的类型
    type(<variable>)
    
  4. Python的集合:分为List(使用[]表示),Set/Dictionary(使用{}表示),Tuple(使用()表示)
  5. 模块的导入
    • 要使用一些系统之外的包中的函数,就需要导入包,使用关键字import来导入

二、Python数据类型

  1. Python数据类型分类
    • 功能划分:
      • 基本类型:数字、布尔值、字符串
      • 容器类型:列表、元组、字典、集合、自定义
    • 性质划分:
      • 可变类型:列表、字典、集合、自定义
      • 不可变类型:数字、布尔值、字符串、元组、不可变集合
  2. 详细说明
    • 数字:

      • 分类:整数(int,包含各种进制,科学计数法)、浮点数(float)、复数(complex)
      • Python中的数字可以表示任意长度的数字
      • 复数的表示:<num1> +/- <num2>j<num1>表示这个复数的实部real<num2>表示这个复数的虚部imag
      • 整数的进制表示:0b开头表示二进制,0o开头表示八进制,0x开头表示十六进制;
      • 科学计数法表示:<num1>e<num2>表示<num1><num2>次方;
    • 字符串:

      • 注意点
        • Python中的所有字符串都是Unicode类型的
        • Python中国的字符串既可以使用",也可以使用',但是需要成对出现;
        • Python把字符串分为单行字符串和多行字符串,单行的就是使用"'表示,多行字符串用"""'''表示;
        • 单行字符串可以使用换行显示的方式使得代码更好看,下面的表示为使用换行显示的方式展示单行字符串(还有一种方式就是使用反斜杠的方式,这种常见于编写脚本的方式,了解即可):
          v1 = ("你真漂亮\(◎o◎)/!,"
          "我都害羞了( ^ω^)"
          "我不知道该说什么"
          "有蓝盆友吗?")
          
          v2 = "你真漂亮\(◎o◎)/!," \
          "我都害羞了( ^ω^)" \
          "我不知道该说什么" \
          "有蓝盆友吗?"
          
      • 常用方法:
        • split([<spliter>[,<split-times>]]):默认按照空格分割,传入分割符后按照分割符分割;<split-times>表示分割的次数,默认是有多少就分割多少连续的空格当作一个处理;
        • rsplit([<spliter>[,<split-times>]]):和split一样都是用来使用分隔符分割字符串的,不同的是从右侧开始分割,但是只有在<split-times>指定小于实际分隔符的情况下才生效;
        • join(<collection>):这个方法是用来把一个集合使用this字符串连接成一个字符串的方法,即使用规则 <spliter-string>.join(<collection>)
        • relace(<source>, <target>[, <replace-times>]):把this的<source>替换成<target>,生成一个新的字符串。<replace-times>用来指定从左边开始替换几个;
        • upper():把this的每个英文字符搜编程大写;
        • lower():把this的每个英文字符搜编程小写;
        • strip():类似其他语言的trim方法,去掉字符串开始和结束的空格换行等字符。响应的lstrip就是去除左边的空格,rstrip就是取出右边的空格;
      • 字符串的格式化:
        • 使用+连接的方式,注意的是不同类型之间不能直接使用+连接,需要先把数据转化成字符串后再进行+
        • 使用{}占位符的形式,类似于C语言中的格式化,不同的是没有C语言中的那些%c%g等,取而代之的就是简单的{}
          "welcome {}, you stand here for {} hours!".format("Ugly龙", 5);
          "Welcome {name}, you stand here for {hour} hours!".format(name="Ugly龙", hour=5);
          
      • 其他的用法
        • 数字转化为字符串:str(<num>)
        • 数字转化为各个进制字符串:bin(<num>)oct(<num>)
        • 字符串转整数:int("<num>")
        • 字符串转浮点数:float("<num>")
        • 获得字符的ASCII码:ord("<character>")
        • 获得ASCII码的字符:chr(<ascii-code>)
      • 补充:经常看见别人的代码在字符串前面添加rb等,补充一下:
        • u/U:表示unicode字符串

          • 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u;但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码。 建议所有编码方式采用utf8
        • r/R:非转义的原始字符串

          • 与普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。而如果是以r开头,那么说明后面的字符,都是普通的字符了,即如果是“\n”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。以r开头的字符,常用于正则表达式,对应着re模块。
        • b:bytes

          • python3.x里默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b”“前缀代表的就是bytes;python2.x里, b前缀没什么具体意义, 只是为了兼容python3.x的这种写法
    • 列表:

      • 列表的初始化:
        • empty_list = []
        • nums = [1, 2, 3]
      • 常用函数:
        • 查看列表的长度:len(<list>)
        • 访问:下标的方式:nums[0],支持负索引,即从后向前取
        • 切片:获取列表的一个子集,[[<start-index>] : [<end-index>][<step>]],这个区间是一个前闭后开的区间,step表示每隔几个取一个值;(注:最外面的[]是必须的,和我个人的记法优点冲突,后面慢慢改进)
        • 判断从属关系:<element> [not] in <list>,表示判断<element>是不是[不]在<list>中
        • <list>.count(<element>),表示<element>在<list>中出现多少次;
        • <list>.index(<element>),表示查询<element>在<list>中第一次出现的索引;
        • <list>.append(<element>),表示把<element>插入到<list>中最后的位置,<element>可以是任何的元素;
        • <list>.insert(<index>, <element>),向<index>位置插入元素;
        • del <list>[<index>],删除<list>中index位置的元素;
        • <list>.pop(<index>),删除<list>中index位置的元素,<index>也可以是负数,默认是最后一个;
        • <list>.remove(<element>),删除<list>中的<element>元素;
        • <list>.sort([reverse=True/False]),根据ASCII编码进行排序;
        • <list>.reverse(),倒序;
        • <list>.extend(<element>),把<element>差分成单个的字符,每个字符作为<list>的一个元素;
    • 元组:

      • 元组和列表非常相似,只不过元组是不可变的,而列表是可变的;需要注意的是当我们生成一个单个元素的元组的时候不能这样写:t = (1),这样写的话,解释器会把它解释成一个单独的数字1,可以在这个数字的后面添加一个逗号来区别,添加逗号后甚至都可以不去写圆括号了
      • 元组支持多变量一起赋值:num1, num2 = 1, 2
      • 相同元素个数的列表可以赋值给元组
      • 元组的速度比列表快,可用下面的代码进行比较:
        %timeit -n <run-times> <code>
        
    • 字典:

      • 注意:
        • 字典只能通过key去获取值,不能通过索引获取
        • 字典的key只能是不可变的元素如数字,元组等,但是不能是浮点值
      • 初始化
        • {}
        • kvs = {1: 2, 2: 3, 3: 4}
      • 常用方法
        • <dict>.get(<key>[, <default-value>]),当不存在的时候不会报错,而<dict>[<key>]在不存在的时候会报错;
        • <dict>.keys(),返回所有键;
        • <dict>.values(),返回所有值;
        • <dict>.items(),返回所有键值对;
        • <dict>.popitem(),移除并返回一个键值对,;
        • <dict>.has_key(<key>),<dict>中是否有这个<key>
        • <dict1>.update(<dict2>),使用新的字典<dict2>更新<dict1>,如果<dict2>中的元素没有在<dict1>中,那么就把<dict2>中的这个元素添加到<dict1>中,如果存在那就根据<dict2>中的这个元素的值来更新<dict1>;需要注意的是,这个方法要求比较多,如key必须是一个sequence
    • 集合(无序列表):

      • 注意:
        • 集合中的元素只能是不可变的元素如数字,元组等,但是不能是浮点值
        • 如果集合a是集合b的子集,那么集合a和b之间可以使用比较运算符来比较
      • 初始化:aSet = set()
      • 常用方法:
        • <set1>.issupperset(<set2>),<set1>是不是<set2>的超集
        • <set1>.issubset(<set2>),<set1>是不是<set2>的子集
        • <set>.add(<element>):向<set>中添加元素
        • <set>.pop([<element>]):把<set>中首个元素弹出
        • frozenset(<list>),创建一个不可变的集合,不常用,可以用来作为字典的key使用

三、Python数据运算

  1. 数字运算
    • 整除:13 // 62
    • 幂次运算:power(3, 10, 5),表示3的10次方模以5的结果
    • 除法运算:divmod(15, 7)(2, 1),前一个数字是除法结果,后一个数字是余数
    • 近似运算:round(3.1415, 2)3.14,表示保留几位小数
  2. 字符串运算
    • 字符串和一个数字相乘,表示把这个字符串输出几次,列表和元组与一个数字相乘,表示把这个里诶包或者元组的元素重复多少次合并成一个新的列表或者元组
    • 列表和元组的加法就是把两个列表或者元组合并
  3. 集合运算
    • <set1> & <set2>,求两个集合的交集
    • <set1> | <set2>,求两个集合的并集
    • <set1> - <set2>,求在集合<set1>但是不再<set2>中的元素
  4. 逻辑运算
    • and:如果都为真,返回最后一个True的值,有一个为False,那么就返回这个为False的值
    • or:返回第一个为true的值,如果都为False,那么返回最后一个值;

三、Python赋值机制

  1. id(<variable>),获取变量<variable>的内存地址
  2. <variable1> is <variable2>,判断<variable1><variable2>是不是指向同一块内存地址;

四、Python中变量的命名:

  1. object #公用方法
  2. _object #半保护
    #被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,
    在模块或类外不可以使用,不能用’from module import *’导入。
    #__object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父
    类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是
    _classname__methodname。
  3. _ _ object #全私有,全保护
    #私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访
    问到这个数据,不能用’from module import *’导入。
  4. _ _ object_ _ #内建方法,用户不要这样定义

查阅:

  1. 实现输入密码的时候不显示的特效
  2. 文字闪烁效果,固定闪烁的次数
  3. 是否能自动把数据格式化成表格的形式显示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,918评论 17 410
  • 1.基本使用 1.1 数据类型 常用数据类型 Common Data Types 其他类型 Others 1.2 ...
    suwi阅读 1,330评论 0 3
  • 很久以前就想写点关于那些走进我生命里的人的事情了,一直搁置至今。 那些走进我生命里的人,写一些我与走进我生命里的人...
  • 很开心今天下厨房做了两种自己爱吃又想念已久的小吃:炒糯米饭和葱油酥饼。第一次尝试做葱油酥饼就成功了! 确实酥酥脆脆...
    Elim温以琳阅读 265评论 0 0
  • 一对新人走向红毯,双方父母充满了殷切的希望:愿他们相亲相爱儿孙满堂!亲朋好友衷心祝福:愿你们天长地久永结同心!步入...
    追梦的风阅读 222评论 0 3