• python基础


    python基础

    声明:我是一个初学者,博文主要是根据自己的思路来汇总知识,方便自己回顾,所以难免会有摘抄。若有侵权,请您告知。


    参考链接:
    http://www.runoob.com/python/python-variable-types.html
    http://www.cnblogs.com/alex3714/articles/5465198.html
    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000


    1. 变量

    1.1 什么是变量?

    Variables are used to store information to be referenced and manipulated in a computer program. They also provide a way of labeling data with a descriptive name, so our programs can be understood more clearly by the reader and ourselves. It is helpful to think of variables as containers that hold information. Their sole purpose is to label and store data in memory. This data can then be used throughout your program.

    1.2 怎么给变量赋值?

    • 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。变量的赋值不需要声明类型,解释器会根据所赋值的数据类型在内存中分配空间,并决定什么数据可以被存储在该变量中。
    • 等号(=)用来给变量赋值。
    • 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

    例如:

    name = "frui"
    

    上述代码声明了一个变量,变量名为name,变量name的值为“frui”

    1.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. 输入和输出

    2.1 输出:print()

    目前只了解到可以输出3类内容

    2.1.1 输出字符串

    直接在print()的括号中加入要输出的字符串,即可向屏幕上输出指定文字。
    print()函数也可以接受多个字符串并依次打印。若字符串之间用逗号“,”隔开,print()依次打印字符串时,每遇到逗号“,”会输出一个空格:

    print ("Hello World!")
    print ("Hello""World""!") #思考结果是 Hello""World""! 还是 HelloWorld!,为什么?
    print ("Hello","World","!")
    
    2.1.2 输出整数,或者计算结果
    print (3)
    print (3+5)
    print ("3+5=",3+5) #字符串和运算之间的","能否省略,为什么?
    
    2.1.3 输出变量

    比如后面学到的list

    2.2 输入:input()

    input()可以让用户输入字符串,并存放到一个变量里

    name = input ("age:")
    print (age) #如果输入27,那么此处age的类型是int还是str,为什么?
    input (age) #思考是否会报错,为什么?如果报错是预编译就报错还是执行的时候报错?
    

    3. 字符编码

    python解释器在加载 .py文件中的代码时,会对内容进行编码,默认ascii,所以在读取中文时会报错,解决方法为只要在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8 就行了。


    4. 模块

    4.1 理解模块

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。
    为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

    4.2 使用模块有什么好处?

        最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
    
        使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
    

    4.3 模块的分类?

    模块分为三种:
    自定义模块
    内置标准模块(又称标准库)
    开源模块

    4.4 怎么使用模块?import语句

    想使用Python源文件,只需在另一个源文件里执行import语句,语法如下

    import module
    

    当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。

    4.5 简单模块介绍

    sys
    sys模块是python解释器自带的一个模块,所以无法找到sys.py这个文件

    用户交互程序


    5. pyc是什么

    编译

    python的执行过程

    • python在执行前会对程序进行预编译(不同于C的全编译),可以说python是一门先编译,后解释的语言。
    • python在执行时,程序会在当前目录下查找是否有同名后缀为.pyc的文件,如果找到,则直接载入执行。否则编译器则会对程序进行预编译,然后在内存中生成一个PyCodeObject供程序执行,执行结束后python解释器将PyCodeObject写回到pyc文件中,供下次执行时直接调用。
    • 注意:为避免程序修改后仍继续调用修改前生成的pyc文件,编译器还有一个对比程序和.pyc文件修改时间的机制,若时间一致则直接调用,否则会重新预编译。

    个人理解:pyton作为一个解释型语言,和编译型比运行速度是一个劣势。这个预编译过程的目的应该是为了弥补这方面不足,尽量提升速率。java也有同样的机制,但和java比,目前python预编译的程度要相对小的多。


    6. 数据类型

    1、数字
    int (整型)
    在32位机器上,整型的位数为32位,范围为-231~231-1
    在64位机器上,整型的位数为64位,范围为-262~263-1
    Python2.2起默认会把整数存为int,如果超出int的位数,则自动将该数据转化为long int。(所以如今在长整数数据后面不加字母L也不会导致严重后果了)

    long (长整型)
    同C不同,Python的长整数没有指定位宽。

    type(2**63)
    

    python3中没有一切整数皆为整型,不再有长整型这个概念

    float(浮点型)

    浮点数和整数在计算机内部的存储方式是不同的,整数的运算永远是精确的,浮点数则可能会有四舍五入的误差。

    complex (复数)
    复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
    2、布尔值
    真或假 True False
    1或0
    3、字符串
    python的字符串内建函数
    1)Python isdigit()方法
    Python isdigit() 方法检测字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False
    isdigit()方法语法:

    str.isdigit()
    

    4、bytes类型(二进制数据)
    在Python2中bytes类型和字符串类型相同。Python3中则对文本和二进制数据做了清晰的区分。文本总是Unicode,由str表示,二进制数据则用bytes类型表示。

    msg = "不懂你的黑色幽默"
    print(msg)
    print(msg.encode())
    print(msg.encode("utf-8"))
    print(msg.encode(encoding="utf-8"))
    print(msg.encode().decode())
    print(msg.encode(encoding="utf-8").decode(encoding="utf-8"))
    

    三元运算

    result = 值1 if 条件 else 值2
    

    如果条件为真:result = 值1
    如果条件为假:reslut = 值2

    进制
    二进制,01
    八进制,01234567
    十六进制,0123456789ABCDEF
    十六进制可以用字母H后缀表示,比如2H;也可以用OX前缀表示,比如OX2;


    7. 循环

    7.1 while循环

    7.2 for循环

    for i in range(10):
        print ("loop:",i)
    
    #按固定步长循环打印
    for i in range(0,10,2):
        print ("loop:",i)
    

    10. Python字符串

    字符串是 Python 中最常用的数据类型。Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。
    在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。
    我们可以使用引号('或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

    10.1 Python访问字符串的值

    Python访问子字符串,可以使用方括号来截取字符串

    10.2 Python字符串操作

    name = "my 	name is {name} and my age is {age}"
    print (name.capitalize())
    print (name.count('i'))
    print (name.center(50,'-'))
    print (name.endswith("rui"))
    print (name.expandtabs(tabsize = 10)) #tab转空格
    print (name.find('name')) #返回所查找字符的索引
    print (name[name.find('name'):]) #字符串切片
    print (name.format(name = 'frui',age = 27))
    print (name.format_map ({'name':'frui','age':27}))
    print ('ab123'.isalnum()) #如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
    print ('ab123'.isalpha()) #如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
    print ('123'.isdecimal(),'1.23'.isdecimal()) #如果 string 只包含十进制数字则返回 True 否则返回 False.
    print ('123'.isdigit()) #如果 string 只包含数字则返回 True 否则返回 False.
    print ('1A'.isidentifier()) #判断是不是一个合法的标识符
    print ('abC'.isnumeric()) #如果 string 中只包含数字字符,则返回 True,否则返回 False (和isdigit有什么区别?)
    print (' '.isspace())
    print ('My Name Is '.istitle()) #如果 string 是标题化的(见 title())则返回 True,否则返回 False
    print ('My Name Is '.isprintable())
    print ('My Name Is '.isupper()) #如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
    print (''.join(['1','2','3'])) #以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
    print ('+'.join(['1','2','3']))
    print (name.ljust(50,'*')) #返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
    print (name.rjust(50,'*'))
    print ('ABC'.lower())
    print ('ABC'.upper())
    print ('
    ABC'.lstrip()) #截掉 string 左边的空格和回车
    print ('ABC
    '.rstrip()) #截掉 string 左边的空格和回车
    print ('
    ABC
    '.strip()) #截掉 string 左边的空格和回车
    #maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
    #第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
    p = str.maketrans ("abcdef",'123456')
    print ('ahafui'.translate(p))
    print ('frui'.replace('ui','ee'))
    print ('fruirrr'.rfind('r')) #类似于 find()函数,不过是从右边开始查找.
    print ('frui so lin'.split()) #以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
    print ('1+2+3+4
    +5'.splitlines())
    print ('1+2+3+4
    +5'.swapcase()) #翻转 string 中的大小写
    print ('1+2+3+4
    +5'.title()) #返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
    print ('fui'.zfill(50)) #返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
    
  • 相关阅读:
    六、Hadoop学习笔记————调优之操作系统以及JVM
    五、Hadoop学习笔记————调优之硬件选择
    四、Hadoop学习笔记————各种工具用法
    三、Hadoop学习笔记————从MapReduce到Yarn
    二、Hadoop学习笔记————架构学习
    一、Hadoop学习笔记————概述
    UTF-8和UTF-8无BOM,一个会导致文件中中文变量无法匹配的bug
    爬虫:用selenium+phantomJS实现简单的登录破解,本文以博客园的登录为例
    运用java接口操作Hadoop文件(一)
    企业级大数据hadoop的安装
  • 原文地址:https://www.cnblogs.com/sorui/p/6516983.html
Copyright © 2020-2023  润新知