python语法基础汇总(一)

编程入门 行业动态 更新时间:2024-10-23 08:34:11

python<a href=https://www.elefans.com/category/jswz/34/1770552.html style=语法基础汇总(一)"/>

python语法基础汇总(一)

py基础

推荐py资料

基础

简介
  • py是解释型语言,具有交互能力,python的一切都是对象。
变量
  • py会自动为变量保留内存空间
  • 可以不显示的声明变量类型
  • 大小写敏感
  • 使用前必须赋值
  • 允许同时为多个变量赋值
    a, b #= 1, 2
基本输入输出
输入

input()

返回用户输入的对象,不论输入数据时使用什么界定符,函数的返回结果都是字符串

输出

print(value, …, sep=’’, end=’\n’,file=sys, flush=False)

sep指定分隔符,end指定结束符

标准数据类型
Numbers(数字)
  • 不可改变的数据类型,改变数字数据类型会分配一个新的对象。

  • 支持4种类型:int,long,float,complex

  • 当你指定一个值时,Number对象就会被创建

    var2 = 10
    使用del删除
    del var1,var2
    
  • 强制转换:数据类型(数据),如:int(x)

  • 相关模块math和cmath

    • math 模块提供了许多对浮点数的数学运算函数。
    • cmath 模块包含了一些用于复数运算的函数。
  • 数学函数

    函数返回值 ( 描述 )
    abs(x)返回数字的绝对值,如abs(-10) 返回 10
    ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
    cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
    exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
    fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0
    floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
    log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
    log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
    max(x1, x2,…) 返回给定参数的最大值,参数可以为序列。
    min(x1, x2,…) 返回给定参数的最小值,参数可以为序列。
    modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
    pow(x, y)x**y 运算后的值。
    [round(x ,n])返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
    sqrt(x) 返回数字x的平方根
  • 随机数函数

    函数描述
    choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
    [randrange (start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
    random() 随机生成下一个实数,它在[0,1)范围内。
    seed(x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
    shuffle(lst) 将序列的所有元素随机排序
    uniform(x, y)随机生成下一个实数,它在[x,y]范围内。
String(字符串)
  • 2种取值顺序

    • 从左到右索引默认0开始的,最大范围是字符串长度少1
    • 从右到左索引默认-1开始的,最大范围是字符串开头
  • 从字符串中获取一段子字符串

    使用[头下标:尾下标]截取,获取的子字符串包含头下标的字符,但不包含尾下标的字符。
    >>> s = 'abcdef'
    >>> s[1:5]
    'bcde'
    
  • 加号(+)也可以是字符串连接运算符,星号(*)是重复操作。

  • in/not in成员运算符,返回true/false

  • 三引号

    • 三引号可以将复杂的字符串进行复制:

      '''when your leg don\'t work like they used to before
      will mouse still remember the taste of my love
      will your eyes still smile from your cheeks'''
      
    • 允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

    • 语法是一对连续的单引号或者双引号(通常都是成对的用)

  • 原始字符串

    print r'Let\'s go!'

    以r开头,最后一个字符不能是反斜线

  • 常用模块string

    • 常用的几个方法
    upper()将字符串转换为大写形式
    lower()转换为小写形式
    title()首字母大写
    capword()正确首字母大写
    replace()replace(old,new)替代
    find()返回子串在字符串中的偏移量(位置)
    count()返回出现的次数
    decode(encoding='UTF-8', errors='strict')以 encoding 指定的编码格式解码 string
    encode(encoding='UTF-8', errors='strict')以 encoding 指定的编码格式编码 string
    join()与split()相反必须是字符串
    strip()去除两侧空格
    
列表(list)
  • 简介

    • py中的数据结构是在py中存储对象数组的极好方式,可以创建任意数据类型的list

    • 列表的数据项不需要具有相同的类型

    • 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

    • 内置了添加,删除,出站,索引,计数,排序,反转等操作的方法

  • 创建

    等号赋值和函数

  • 添加与删除

    • append()
    • del()
  • 列表函数

    列表函数
    1cmp(list1, list2) 比较两个列表的元素
    2len(list) 列表元素个数
    3max(list) 返回列表元素最大值
    4min(list) 返回列表元素最小值
    5list(seq) 将元组转换为列表
  • 列表方法

    列表方法
    1list.append(obj) 在列表末尾添加新的对象
    2list.count(obj) 统计某个元素在列表中出现的次数
    3list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    4list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
    5list.insert(index, obj) 将对象插入列表
    6[list.pop(index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    7list.remove(obj) 移除列表中某个值的第一个匹配项
    8list.reverse() 反向列表中元素
    9list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
    10list.pop 移出列表一个元素,并返回该元素的值
    11remove 移出列表中某个值的第一项,不移出重复的
元组
  • 元组与列表类似,不同之处在于元组的元素不能修改

  • 元组使用小括号

  • 创建很简单,只需要在括号中添加元素,并使用逗号隔开即可

  • 内置函数

    1cmp(tuple1, tuple2) 比较两个元组元素。
    2len(tuple) 计算元组元素个数。
    3max(tuple) 返回元组中元素最大值。
    4min(tuple) 返回元组中元素最小值。
    5tuple(seq) 将列表转换为元组。
字典(Dictionary)
  • 字典是另一种可变容器模型,且可存储任意类型对象。

  • 字典的每个键值 key=>value 对用冒号: 分割,每个键值对之间用逗号, 分割,整个字典包括在花括号 {},如

    d = {key1 : value1, key2 : value2 }

  • 值可以取任何数据类型,但键必须是不可变的

  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

  • 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行

  • 访问

    • 用方括号
  • 修改字典

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J7rKufPN-1600180031028)( python基础.assets\3.jpg)]

  • 内置函数

    内置函数
    1cmp(dict1, dict2) 比较两个字典元素。
    2len(dict) 计算字典元素个数,即键的总数。
    3str(dict) 输出字典可打印的字符串表示。
    4type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
    5dict 通过其他映射或者键值的序列建立字典
  • 内置方法

    内置方法
    1dict.clear() 删除字典内所有元素
    2dict.copy() 返回一个字典的浅复制(替换无影响,修改有影响)
    deepcopy 深复制
    3dict.fromkeys(seq, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
    4dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
    5dict.has_key(key) 如果键在字典dict里返回true,否则返回false
    6dict.items() 以列表返回可遍历的(键, 值) 元组数组
    7dict.keys() 以列表返回一个字典所有的键
    8dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    9dict.update(dict2) 把字典dict2的键/值对更新到dict里
    10dict.values() 以列表返回字典中的所有值
    11[pop(key,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
    12 popitem() 随机返回并删除字典中的一对键和值。
集合
  • 由序列(或者其他可迭代的对象)构建的,主要用于检测成员资格,是无序的
创建
set()
运算符
算术
** 幂 - 返回x的y次幂
// 取整除 - 返回商的整数部分(向下取整)
位运算
&	按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0	
|	按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。	
^	按位异或运算符:当两对应的二进位相异时,结果为1 	(
~	按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。
<<	左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。	
>>	右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 
逻辑运算符
and 与
or 或
not 非
条件语句

这里要注意python是依靠缩进来体现代码之间的逻辑关系的

if 判断条件:执行语句……
else:执行语句……
循环语句
while
while 判断条件:执行语句……breakcontinue 用法不变while 判断条件:执行语句……
else 在循环条件为 false 时执行 else 语句块
for
  • for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for iterating_var(变量) in sequence(迭代范围):statements(s)(执行语句)forelse    else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
pass语句
  • Python pass 是空语句,是为了保持程序结构的完整性。
  • pass 不做任何事情,一般用做占位语句。
其他
  • exec

    执行一个字符串的语句

    可以动态地创建代码字符串

  • eval

    计算py表达式并返回结果

  • 以上两个函数使用时建议建立一个作用域

函数
定义函数
  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号**()**。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
def functionname( parameters ):"函数_文档字符串"function_suitereturn [expression]#假如只跟上一个return,则表示结束函数
记录函数
  • 文档字符串
  • 如果在函数的开头写下字符串,他就会作为函数的一部分进行存储
调用函数
  • 可以通过另一个函数调用执行,也可以直接从Python提示符执行
参数传递
  • 在 python 中,类型属于对象,变量是没有类型的

  • 可更改与不可更改对象

    • 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象

      • **不可变类型:**变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
      • **可变类型:**变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
    • 参数传递

      • **不可变类型:**类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
      • **可变类型:**类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
参数
  • 必备参数

    • 须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
  • 关键字参数

    • 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值,如

      def printme( str ):"打印任何传入的字符串"print str;return;#调用printme函数
      printme( str = "My string");
      
  • 默认参数

    • 调用函数时,默认参数的值如果没有传入,则被认为是默认值
  • 不定长参数

    • 函数能处理比当初声明时更多的参数

      def printinfo( arg1, *vartuple ):"打印任何传入的参数"print "输出: "print arg1for var in vartuple:print varreturn;# 调用printinfo 函数
      printinfo( 10 );
      printinfo( 70, 60, 50 );
      
匿名函数
  • python 使用 lambda 来创建匿名函数。

    • lambda只是一个表达式,函数体比def简单很多。
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
    • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
  • 语法

    lambda [arg1 [,arg2,.....argn]]:expression

    # 可写函数说明
    sum = lambda arg1, arg2: arg1 + arg2;# 调用sum函数
    print "相加后的值为 : ", sum( 10, 20 )
    print "相加后的值为 : ", sum( 20, 20 )
    
全局与局部变量
  • 和平常一样
模块
  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

  • 模块能定义函数,类和变量,模块里也能包含可执行的代码。

  • 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

  • 一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

import 语句
  • 引入模块

  • 语法

    import module1

    • 要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:

      模块名.函数名

from …import
  • 从模块中导入一个指定的部分到当前命名空间中

    from modname import name1
    
from …import*
  • 把一个模块的所有内容全都导入到当前的命名空间

    from modname import *

命名空间和作用域
  • 命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典
  • 一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。
  • Python 会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。
  • 如果要给函数内的全局变量赋值,必须使用 global 语句
dir()
  • 一个排好序的字符串列表,内容是一个模块里定义过的名字。
  • 返回的列表容纳了在一个模块里定义的所有模块,变量和函数
globals() locals()函数
  • 根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。
  • 如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
reload()
  • 当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次

  • 该函数会重新导入之前导入过的模块。

    reload(modname)

py中的包
  • 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
  • 简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py文件, 该文件的内容可以为空,__init__.py 用于标识当前文件夹是一个包。
常用模块
sys
  • 能够访问与py解释器练习紧密的变量和函数

os
  • 访问多个操作系统服务的功能

fileinput
  • 遍历文本文件的所有行

文件I/O
基本
  • 打印到屏幕 - print

  • 读取键盘输入

    • raw_input

      • raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)即把输入的当做原始数据
    • input

      • 和raw_input基本类似, 但input 可以接收一个Python表达式作为输入,并将运算结果返回。输入的要时合法的python表达式
打开关闭文件
  • file 对象做大部分的文件操作

  • 你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写

    • 语法

      file object = open(file_name [, access_mode][, buffering])file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
    • 模式

      模式描述
      t文本模式 (默认)。
      x写模式,新建一个文件,如果该文件已存在则会报错。
      b二进制模式。
      +打开一个文件进行更新(可读可写)。
      U通用换行模式(不推荐)。
      r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
      rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
      r+打开一个文件用于读写。文件指针将会放在文件的开头。
      rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
      w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
      wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
      w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
      wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
      a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
      ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
      a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
      ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
file对象的属性
属性描述
file.closed返回true如果文件已被关闭,否则返回false。
file.mode返回被打开文件的访问模式。
file.name返回文件的名称。
file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
  • close()方法

    • File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入

      # 打开一个文件
      fo = open("foo.txt", "w")
      print "文件名: ", fo.name假如指定了绝对路径的要用“\\”,有一个用来转义的
      # 关闭打开的文件
      fo.close()
      
  • write()方法

    • write()方法可将任何字符串写入一个打开的文件

    • write()方法不会在字符串的结尾添加换行符(’\n’)

    • Python字符串可以是二进制数据

    • 语法

      fileObject.write(string)

  • read()方法

    • read()方法从一个打开的文件中读取一个字符串

    • Python字符串可以是二进制数据

    • 语法

      fileObject.read([count])

文件定位
  • tell()方法告诉你文件内的当前位置
  • seek(offset [,from])方法改变当前文件的位置
    • Offset变量表示要移动的字节数
    • From变量指定开始移动字节的参考位置
重命名和删除文件
  • os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件

  • rename()

    • 语法

      os.rename(current_file_name, new_file_name)

  • remove()

    • 语法

      os.remove(file_name)

目录
  • os模块有许多方法能帮你创建,删除和更改目录。

  • mkdir()

    • 语法

      os.mkdir("newdir")

  • chdir()

    • 改变当前目录

    • 语法

      os.chdir("newdir")

  • getcwd()

  • 显示当前目录

  • rmdir()

    • 语法

      os.rmdir('dirname')

异常处理
什么是异常?
  • 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行
  • 异常是Python对象,表示一个错误。
处理
  • 捕捉异常可以使用try/except语句

  • try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

  • 如果你不想在异常发生时结束你的程序,只需在try里捕获它。

  • 语法

    try:
    <语句>        #运行别的代码
    except <名字>:
    <语句>        #如果在try部份引发了'name'异常
    except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
    else:
    <语句>        #如果没有异常发生
    finally:
    不管是否有异常,都执行
    

更多推荐

python语法基础汇总(一)

本文发布于:2023-07-28 15:44:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1239275.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语法   基础   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!