• python入门


        第一次接触到python这个概念还是在2013年在锐捷网络做实习生的时候,当时因为项目测试需要,有提出想用python进行自动化测试,但是由于项目的实际需要,后面最终没有用,也就搁置了python的学习,自己载了python的教程,也是看的零零碎碎的,最近一直在思考自己应该做什么,迷茫,好像很多语言很多工具需要自己去学习,但又精力不够,最新的想法是与其去和那些培训或者门槛低的人去抢android的饭碗,不如在自己C++编程的基础上,学习少数人会去学习的语言,就像java语言一样,很多人都说会用java语言编程,但是真正能深入理解其机制和原理的,估计不多,多的是用框架去编写项目。

        python:简洁,优雅,快捷

        简洁到变量可以不用定义直接用,可以调用很多函数,方便移植,对数据的处理速度快,但是耗内存

        我学习python的时候,感觉这就像是在看小学生的作业,当然只是刚学习到了基础部分,还没有进阶到高阶,加了个python开发群,去群里问了有没什么好的IDE,热心的人说pycharm不错,载下来发现这就是传说中的大蟒蛇,果然给力。

        整理了下python的入门知识。

    1.变量和数据类型

    1.1 数据类型

    在Python中,能够直接处理的数据类型有以下几种:

    一、整数

    Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样。

    二、浮点数

    浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是相等的。

    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

    三、字符串

    字符串是以''""括起来的任意文本,比如'abc'"xyz"等等。请注意,''""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。

    四、布尔值

    布尔值和布尔代数的表示完全一致,一个布尔值只有TrueFalse两种值,要么是True,要么是False,在Python中,可以直接用TrueFalse表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

    布尔值可以用andornot运算。

    五、空值

    空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

    对比与C语言,可以发现很多的不同,最大的不同就是更加抽象化和口语化

    1.2 变量

    在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和_的组合,且不能用数字开头

    a = 123    # a是整数
    print a
    a = 'imooc'   # a变为字符串
    print a

    这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。

    静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

    int a = 123; // a是整数类型变量
    a = "mooc"; // 错误:不能把字符串赋给整型变量

    和静态语言相比,动态语言更灵活。

    1.3 注释

    单行注释用“#”

    C语言用/**/或//

    2.list和Tuple类型

    2.1 list:列表,有序的集合,由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据,用[元素]。

         顺序访问list:需要特别注意的是,索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。

         倒序访问list:最后一个元素的索引是-1,以此类推。

                      类似于数组的访问

         添加元素:用函数append(i),如:L.append("hello"),用函数insert(i,h),如:L.insert(0,"hello")在L的第一个位置添加“hello”元素,其他元素自动移位,比数组的添加简单多了。

         删除元素:用函数pop(i),删除第i个元素,当用pop()时表示删除最后一个元素,其他元素自动移位。

         替换元素:直接针对位置替换,如:L(2)="HEllo",将原本第三个位置的元素替换为“HEllo”

    2.2 Tuple:有序的列表,我们称为“元组”,tuple一旦创建完毕,就不能修改,创建tuple和创建list唯一不同之处是用( 元素)替代了[ ]。

         但是当Tuple里面的元素是可变的集合,比如list时,list对应的元素可以进行修改,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的。

    3.条件判断和循环

    3.1 if :冒号表示对应的代码块

              要缩进

          elif  :

              要缩进

          else:

              要缩进

    3.2 for name in L  :

              要缩进,不需要什么++之类的,比C简单很多

    3.3 while x<N:

            add code要缩进

            x+=1或x=x+1

    3.4 退出循环

          break:后续循环  continue:当次循环

    4.Dict和SET

    4.1 dict:key-value,类似于map,用{元素},并且key不能重复。

    4.1.1 当访问value的时候,要避免 KeyError 发生,有两个办法:

    一是先判断一下 key 是否存在,用 in 操作符:

    if 'Paul' in d:
        print d['Paul']

    如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

    二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:print d.get('Bart')

    4.1.2 dict特点:1.查找速度快,无论数据量多少,当然是以消耗内存为代价的,list正好相反,占用内存小,但是查找速度慢。2. 存储的key-value序对是没有顺序的,所以可能每次打印出来的dict都不一样。3.作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key

    4.1.3 添加和更新元素:直接采用赋值语句

    4.1.4 遍历:for循环,如:

    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    for key in d:
        print key

    4.2 set: 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

       set里面的元素大小写敏感,而且访问时可以用:in 进行判断元素是否存在。

    Bart是该班的同学吗?

    >>> 'Bart' in s
    True

    bart是该班的同学吗?

     >>> 'bart' in s

    False
    4.2.1 set的特点:

    set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。

    set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。

    最后,set存储的元素也是没有顺序的。

    4.2.2 遍历:for name in set:进行遍历

    4.2.3 更新:采用add()直接添加,判断后再用remove()删除

    5.函数

    在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

    5.1 定义默认参数:由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面,请定义一个 greet() 函数,它包含一个默认参数,如果没有传入,打印 'Hello, world.',如果传入,打印 'Hello, xxx.'其中world设置为默认参数。

    5.2 定义可变参数:

    如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:

    def fn(*args):
        print args

    可变参数的名字前面有个 号,我们可以传入0个、1个或多个参数给可变参数。

    Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 。例如:求任意数的平均值

    6.对list进行切片:L[0:10],L[::2],L[0:-1],L[4:50:5]

    7.迭代:Python中,迭代永远是取出元素本身,而非元素的索引。

    7.1 list迭代索引:使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:

    ['Adam', 'Lisa', 'Bart', 'Paul']

    变成了类似:

    [(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
    enumerate()函数和zip函数的功能类似,只是zip可以指定索引,而enumerate()函数默认从索引0开始。

    zip()函数可以把两个 list 变成一个 list:

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]
    7.2 dict迭代获取values:
    用dict.values()或dict.itervalues()可以获取dict的所有values值。

    1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

    2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

    如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

    7.3 dict迭代key和values:

    for key, value in d.items():
    ...     print key, ':', value
    用函数items()或iteritems()
    8.列表生成式:列表生成式则可以用一行语句代替循环,如:
    [x * x for x in range(1, 11) if x % 2 == 0]条件过滤
    [m + n for m in 'ABC' for n in '123'多重循环


    
    
    
    

         

    ~越努力越幸运~
  • 相关阅读:
    MacOS中Elasticsearch的安装「借助Homebrew」
    全文搜索Lucene之倒排索引
    MybatisCodeHelperNew-2.8.1-191-201插件使用
    支付宝支付-当面付之扫码支付「扫码支付」
    ConcurrentHashMap底层原理?
    支付宝手机h5网页支付不再提供「继续浏览器付款」按钮了吗
    小程序json字符串取值问题,怎么取出来的是undefined,eval函数不能用?
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})注解作用
    CAS无锁机制
    数组追加数组,小程序数组里面追加数组如何操作?
  • 原文地址:https://www.cnblogs.com/xtlyf1314/p/4665044.html
Copyright © 2020-2023  润新知