• python学习第一天-语法学习


    1.python简介

     python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

        最新的TIOBE排行榜,Python赶超PHP占据第4, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

    Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。

    2.python的应用领域

    #1. WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
    #2. 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单
    #3. 爬虫——爬虫领域,Python几乎是霸主地位,ScrapyRequestBeautifuSoapurllib等,想爬啥就爬啥
    #4. 云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
    #5. 人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
    #6. 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
    #7. 金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
    #8. 科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
    #9. 游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏<文明> 就是用Python写的

    3.python的种类

    我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:
    
    #CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
    当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
    
    #IPython
    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
    
    #PyPy
    PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
    绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
    
    #Jython
    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
    
    #IronPython
    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
    

     4.python解释器的安装(在这就不多说了,百度上很多自行安装pycharm即可)

     5.python语法学习

       1.变量的命名和定义

         python中没有常量的语法,在python中定义的都是可以改变的量,不过要是定义的变量都是大写,默认是不去修改,约定的就是常量,变量命名就是

    #1. 变量名只能是 字母、数字或下划线的任意组合
    #2. 变量名的第一个字符不能是数字
    #3. 关键字不能声明为变量名['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']
    

      2.定义方式

    #驼峰体
    AgeOfOldboy = 56 
    NumberOfStudents = 80
    #下划线(推荐使用)
    age_of_oldboy = 56 
    number_of_students = 80

     3.变量的比较

    #变量中涉及到三个值
    id:获取变量在内存中的地址
    type:定义变量的类型
    value:变量的值
    
    name = 18
    #python的输出语句 print(id(name)) print(type(name)) print(name)

    #注意
    #python中id相同,则value和type一定相同
    #value相同,id不一定相同

      4.用户的交互

    #在python3中
    input:用户输入任何值,都存成字符串类型
    message1 = input('请输入您的账号:')
    
    #在python2中
    input:用户输入什么类型,就存成什么类型
    raw_input:等于python3的input
    message2 = raw_input('请输入您的账号:')
    

     5.python添加注释的两种方法

    代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" """
    
    代码注释的原则:
    #1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
    #2. 注释可以用中文或英文,但不要用拼音
    

     6.python常用基本数据类型

      1.数字

    #int(整型)
    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
    定义:age=10 #age=int(10)
    用于标识:年龄,等级,身份证号,qq号,个数
    #long(长整型)
    跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
    注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
    注意:在Python3里不再有long类型了,全都是int
    #float浮点型
    定义:salary=3.1 #salary=float(3.1)
    用于标识:工资,身高,体重,
    #complex复数型
    >>> x=1-2j
    >>> x.imag
    -2.0
    >>> x.real
    1.0
    

     2.字符串

    #在python中,加了引号的字符就是字符串类型,python并没有字符类型。
    定义:name='egon' #name=str('egon') 
    用于标识:描述性的内容,如姓名,性别,国籍,种族
    
    #那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
    msg = "My name is Egon , I'm 18 years old!"
    
    #多引号什么作用呢?作用就是多行字符串必须用多引号
    msg = '''
    今天我想写首小诗,
    歌颂我的同桌,
    你看他那乌黑的短发,
    好像一只炸毛鸡。
    '''
    print(msg)
    
    #数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。
    >>> name='egon'
    >>> age='18'
    >>> name+age #相加其实就是简单拼接
    'egon18'
    >>> name*5 
    'egonegonegonegonegon'
    
    
    #注意1:字符串相加的效率不高
    字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,
    
    #注意2:只能字符串加字符串,不能字符串加其他类型
    

     3.列表

    #在[]内用逗号分隔,可以存放n个任意类型的值
    定义:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',]) 
    用于标识:存储多个值的情况,比如一个人有多个爱好
    
    #存放多个学生的信息:姓名,年龄,爱好
    >>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
    >>> students_info[0][2][0] #取出第一个学生的第一个爱好
    'play'
    

     4.字典

    #在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
    定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18})
    用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
    
    info={
        'name':'egon',
        'hobbies':['play','sleep'],
        'company_info':{
            'name':'Oldboy',
            'type':'education',
            'emp_num':40,
        }
    }
    print(info['company_info']['name']) #取公司名
    
    
    students=[
        {'name':'alex','age':38,'hobbies':['play','sleep']},
        {'name':'egon','age':18,'hobbies':['read','sleep']},
        {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
    ]
    print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好
    

     5.布尔

    #布尔值,一个True一个False
    #计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
    >>> a=3
    >>> b=5
    >>> 
    >>> a > b #不成立就是False,即假
    False
    >>> 
    >>> a < b #成立就是True, 即真
    True
    
    接下来就可以根据条件结果来干不同的事情了:
    if a > b 
       print(a is bigger than b )
    
    else 
       print(a is smaller than b )
    上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
    

     布尔类型的注意点

    #所有数据类型都自带布尔值
    1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
    2、其余均为真
    

     重点

     重点:
    
    #1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
    
    #2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
    

     7.格式化输出

    #%s字符串占位符:可以接收字符串,也可接收数字
    print('My name is %s,my age is %s' %('egon',18))
    #%d数字占位符:只能接收数字
    print('My name is %s,my age is %d' %('egon',18))
    print('My name is %s,my age is %d' %('egon','18')) #报错
    
    #接收用户输入,打印成指定格式
    name=input('your name: ')
    age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d
    
    print('My name is %s,my age is %s' %(name,age))
    
    #注意:
    #print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错
    

     8.基本运算符

     1.算数运算

    运算符描述

    2.比较运算

    比较运算

    3.  赋值运算

    4.逻辑运算

    逻辑运算

    #三者的优先级从高到低分别是:not,or,and
    >>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
    False
    #最好使用括号来区别优先级,其实意义与上面的一样
    >>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
    False 
    

     5.身份运算

    #is比较的是id
    #而==比较的是值
    

    9.流程控制

      1.if..else流程控制

    项目中经常有对某个值或者是某种状态进行判断,根据判断的结果去执行下一步的逻辑,在满足某种条件之后才会去执行这个操作。当输入的分数满足指定的分数就会进入到这个循环判断的语句中,if..else只会执行一种情况
    score=input('>>: ')
    score=int(score)
    
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('良好')
    elif score >= 70:
        print('普通')
    else:
        print('很差')
    

     2.while流程控制,其语法格式如下,

    while 条件:    
        # 循环体
     
        # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
        # 如果条件为假,那么循环体不执行,循环终止
    
    
    #简单例子如下
    #打印0-10
    count=0
    while count <= 10:
        print('loop',count)
        count+=1
    
    #打印0-10之间的偶数
    count=0
    while count <= 10:
        if count%2 == 0:
            print('loop',count)
        count+=1
    
    #打印0-10之间的奇数
    count=0
    while count <= 10:
        if count%2 == 1:
            print('loop',count)
        count+=1
    内层中while还可以嵌套while
    tag=True 
      while tag:
        ......
        while tag:
          ........
          while tag:
            tag=False
    
    

    while循环的退出与继续
    #break用于退出本层循环
    while True:
        print "123"
        break
        print "456"
    
    #continue用于退出本次循环,继续下一次循环
    while True:
        print "123"
        continue
        print "456"
    name='egon'
    password='123'
    while True:
        inp_name=input('用户名: ')
        inp_pwd=input('密码: ')
        if inp_name == name and inp_pwd == password:
            while True:
                cmd=input('>>: ')
                if not cmd:continue
                if cmd == 'quit':
                    break
                print('run <%s>' %cmd)
        else:
            print('用户名或密码错误')
            continue
        break
    

    3.流程控制语句 for

     迭代式循环:for,语法如下
      for i in range(10):
        缩进的代码块
    
    
    #九九乘法表
    for i in range(1,10):
        nums = []
        for j in range(1,i+1):
            numstr = str(j)+'*'+str(i)+'='+str(i * j)
            nums.append(numstr)
        print(nums)
    
    #输出显示
    ['1*1=1']
    ['1*2=2', '2*2=4']
    ['1*3=3', '2*3=6', '3*3=9']
    ['1*4=4', '2*4=8', '3*4=12', '4*4=16']
    ['1*5=5', '2*5=10', '3*5=15', '4*5=20', '5*5=25']
    ['1*6=6', '2*6=12', '3*6=18', '4*6=24', '5*6=30', '6*6=36']
    ['1*7=7', '2*7=14', '3*7=21', '4*7=28', '5*7=35', '6*7=42', '7*7=49']
    ['1*8=8', '2*8=16', '3*8=24', '4*8=32', '5*8=40', '6*8=48', '7*8=56', '8*8=64']
    ['1*9=9', '2*9=18', '3*9=27', '4*9=36', '5*9=45', '6*9=54', '7*9=63', '8*9=72', '9*9=81']
    
  • 相关阅读:
    ios本地推送
    ios BUG
    性能优化
    数据结构设计
    代码的可维护性
    NSMutalbleDictionary
    NSDictionary
    NSMutableArray
    java 容器
    Java bug
  • 原文地址:https://www.cnblogs.com/zj901203/p/9231775.html
Copyright © 2020-2023  润新知