语句,表达式

赋值语句

  • 变量名首次使用时会被创建
  • 变量名使用前必须复制
  • 隐晦的赋值操作
    • 模块导入
    • 函数定义
    • 类定义

赋值语句大于序列赋值

打印语句

print()

分支语句

  • if语句中的判断为真值判断
  • 真值测试可以是逻辑表达式,算数运算式,in,not in等
  • 真值判定
    • 任何非零数字和非空对象为True
    • 数字零,空对象,None为False
  • 三元操作符
    • A=Y if < test > else x
    • y,x,< test >结构较简单是采用三元表达式
    • 否则推荐使用完整条件语句

循环语句

WHILE条件循环

while <test>:
if ...
else:
...

FOR迭代循环

for <target> in <object>:
if ...
else:
...

关键字

  • break: 跳出当前循环
  • continue: 跳过continue之后的语句到当前循环起始处
  • pass: 占位语句
  • else: 循环正常结束执行else语句块,break会跳过else块

break只能跳出一层循环,return则会直接跳出整个循环

内置方法

  • range()

    • range(start,end)
    • range(end)
    • range(start,end,step)
  • reversed()
    • 逆序访问序列
    • 返回一个迭代器
  • enumerate()
    • 同时获取元素的内容和偏移

函数

函数的作用

  • 最大化代码复用
  • 最小化代码冗余
  • 对逻辑流程进行分解
  • 面向对象过程程序设计的基本单元

函数的三要素

  • 函数名
  • 参数列表
  • 返回值

函数定义

def <name>([arg1])
<statements>
[return [val]]

DEF语句

  • def是可执行的python语句
  • def执行之后函数对象才被创建
  • def可以出现在程序的任何位置
  • 本质是将函数对象赋值给函数名
  • 空函数

RETURN语句

  • 返回一个对象给调用者
  • return之后的语句全部忽略
  • 返回值形式

函数调用

def add(a,b):
s = a + b
return s result = add
add(1,2)
result(1,2)

作用域

作用域就是一个 Python 程序可以直接访问命名空间的正文区域.

在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到.否则会报未定义的错误。

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python的作用域一共有4种,分别有四种作用域:

  • L(Local):最内层,包含局部变量,比如一个函数/方法内部.
  • E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量.比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal.
  • G(Global):当前脚本的最外层,比如当前模块的全局变量.
  • B(Built-in): 包含了内建的变量/关键字等,最后被搜索.
  • GLOBAL: 对在模块内部的变量改变全局变量添加global参数使其变为全局变量,可以在函数内部直接使用

闭包

闭包指延伸了对象作用域的函数

其中包含了在函数定义体内引用,但不在定义体定义的非全局变量

自由变量: 指未在本地作用域中绑定的变量

闭包会保留定义函数时存在的自由变量的绑定,这样调用函数的时候,虽然定义作用域不存在,但仍然可以使用那些自由变量的绑定

nonlocal将变量名搜索范围限定在嵌套函数之内,闭包之外

s1 = 'hello'
def outer():
s = 'start'
def inner():
nonlocal s # ok
nonlocal s1 # error
return inner

递归函数

def factorial(n):
if 0==n:
return 1
else:
return factorial(n-1)
factorial(10)
# 通过在内部重复调用自己,来完成函数目标

匿名函数

使用lambda表达式构建并返回一个函数

  • lambda是一个表达式而不语句
  • lambda的主体是一个单一的表达式而不是语句块
  • 除以上两条,lambda和def做同样的工作
  • lambda一般用于给高阶函数传递参数
foo = lambda x,y:x+y
foo(10,20)

迭代

可迭代对象

字符串; 列表; 元组, 字典, 集合

判断是否可迭代的对象

isinstance(obj,Iterable)

生成器表达式

生成器表达式与列表推导式类似,操作符有'[]'变为'()'

i = (n for n in range(51))
next(i)

生成器函数

  • 在普通函数中使用yield关键字函数变为生成器函数
  • 函数每次执行到yield语句暂停运行,返回yield语句的结果
  • 被调用后返回一个可迭代对象

迭代工具

for: 自动迭代工具

next(): 手动迭代工具,每次返回一个结果,迭代结束返回一个stopiteration

迭代器对象

迭代器对象Iterator

iter()返回一个迭代器对象,其可以被for调用也可以被next()调用

Python基础『二』的更多相关文章

  1. Python基础『一』

    内置数据类型 数据名称 例子 数字: Bool,Complex,Float,Integer True/False; z=a+bj; 1.23; 123 字符串: String '123456' 元组: ...

  2. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  3. python基础知识(二)

    python基础知识(二) 字符串格式化 ​ 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 ​ print(' %s is boy'%('tom')) ----> ...

  4. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  5. Python之路:Python 基础(二)

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'lenliu' print name 下面的结论对吗?(对) 外层变量,可以被 ...

  6. Python基础篇(二)_基本数据类型

    Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...

  7. python基础(二)-------数据类型

    python开发基础篇(二)数据类型 python数据类型有: 1.数字 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 主要的分类为:整型,长整型,(python2有长整型的概念Pytho ...

  8. 第八章:Python基础の面向对象(二)

    本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...

  9. Python 基础【二】 上

    一.python语言分类 1. C python   c语言的python版本 官方推荐 使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行 ...

随机推荐

  1. tomcat使用实践三种运行模式之apr

    tomcat有三种运行模式 nio,bio,apr bio是阻塞式IO操作,使用的是传统的java i/o处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景 nio ...

  2. 利用简单的有限状态机(FSM)来实现一个简单的LED流水灯

    有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型. 有限状态机是指输出取决于过去 ...

  3. python 绘制sinx

    code import turtle import math turtle.speed() turtle.penup() turtle., * math.sin((-/) * * math.pi)) ...

  4. [C语言]结构体初始化的不同方法

    结构体的定义 struct Test{ int first; double second; }Sample; 方法一 定义时直接赋值 Sample s(1, 1.00); 缺点:必须匹配变量顺序,不能 ...

  5. sudo 问题:sorry, you must have a tty to run sudo

    写定时任务时候遇到 如下问题 To start backup... -- :: sudo: sorry, you must have a tty to run sudo The backup to c ...

  6. LeetCode 112. 路径总和(Path Sum)

    题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum ...

  7. matplotlib:plt.rcParams设置画图的分辨率,大小等信息

    主要作用是设置画的图的分辨率,大小等信息 plt.rcParams['figure.figsize'] = (8.0, 4.0) # 设置figure_size尺寸 plt.rcParams['ima ...

  8. CentOS 7 最小化安装后的注意事项

    http://blog.csdn.net/f_srion/article/details/54910943 在VM虚拟机中安装CentOS 7 时 有时候顾虑到电脑硬件性能,我们需要最小化安装,而最小 ...

  9. 几句简单的python代码完成周公解梦功能

    <周公解梦>是靠人的梦来卜吉凶的一本于民间流传的解梦书籍,共有七类梦境的解述.这是非常传统的中国文化体系的一部分,但是如何用代码来获取并搜索周公解梦的数据呢?一般情况下,要通过爬虫获取数据 ...

  10. Qt编写自定义控件18-魔法小鱼

    前言 上次发了个纯painter绘制的老鼠,那个就是qt目录下的demo,改的,只是比demo中的老鼠稍微胖一点,估计人到中年都发福吧.这次来一个魔法小鱼,这条鱼可以变换颜色,尾巴还会摇动,可以设定旋 ...