Python基础『二』
语句,表达式
赋值语句
- 变量名首次使用时会被创建
- 变量名使用前必须复制
- 隐晦的赋值操作
- 模块导入
- 函数定义
- 类定义
赋值语句大于序列赋值
打印语句
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基础『二』的更多相关文章
- Python基础『一』
内置数据类型 数据名称 例子 数字: Bool,Complex,Float,Integer True/False; z=a+bj; 1.23; 123 字符串: String '123456' 元组: ...
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- python基础知识(二)
python基础知识(二) 字符串格式化 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 print(' %s is boy'%('tom')) ----> ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python之路:Python 基础(二)
一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'lenliu' print name 下面的结论对吗?(对) 外层变量,可以被 ...
- Python基础篇(二)_基本数据类型
Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...
- python基础(二)-------数据类型
python开发基础篇(二)数据类型 python数据类型有: 1.数字 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 主要的分类为:整型,长整型,(python2有长整型的概念Pytho ...
- 第八章:Python基础の面向对象(二)
本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...
- Python 基础【二】 上
一.python语言分类 1. C python c语言的python版本 官方推荐 使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行 ...
随机推荐
- Python数据抓取(3) —抓取标题、时间及链接
本次分享,jacky将跟大家分享如何将第一财经文章中的标题.时间以及链接抓取出来 (一)观察元素抓取位置 网页的原始码很复杂,我们必须找到特殊的元素做抽取,怎么找到特殊的元素呢?使用开发者工具检视每篇 ...
- Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列
什么是递归?简单的说就是:函数自身调用自身. “普通程序员用迭代,天才程序员用递归” 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归 ...
- 作为新手对于初次接触matlab的一些感受。
使用matlab时的个人感受:1.建立一个matlab的M文件函数function xxx=aaa(b,c,d) 其中返回值为xxx,函数名为aaa,函数变量为b,c,d 要将其写在一个M文件之中,并 ...
- 爬虫之requests库的使用
get基本请求 响应对象的属性: # 获取响应对象中的内容是str格式 text # 获取响应对象中的内容是二进制格式的 content # 获取响应状态码 status_code # 获取响应头信息 ...
- Pytest学习笔记(一) 环境安装及入门
简介 pytest是python的一个单元测试框架,类似于unittest,相对unittest来说,pytest使用更简单,功能更强大. 安装 pip3 install -U pytest 查看版本 ...
- 【洛谷4251】 [SCOI2015]小凸玩矩阵(二分答案,二分图匹配)
题面 传送门 Solution 看到什么最大值最小肯定二分啊. check直接跑一个二分图匹配就好了. orz ztl!!! 代码实现 /* mail: mleautomaton@foxmail.co ...
- ubuntu 文件管理器 异常 强制关闭
搜索进程号 ps -A | grep nautilus 杀掉 sudo kill xxxxx
- [BTS] BizTalk WCF-SQL Adapter 高级应用
9102年岁尾,41岁的我居然还在搞 BizTalk,感觉就是一种悲伤. 国内用户少之又少,能坚持一直在使用的“忠实”用户那就更少了. 不是它不好用,而是微软全线转向云服务,这个产品也已经快10年没有 ...
- windows服务器安装nodejs实现自动计划
直接官网打开:https://nodejs.org/en/ 下载相应的系统nodejs版本直接安装后,通过命令行window+r 输入node + web(目录)+\pubils\app.js ...
- ansiblle---roles
使用ansible中的roles来管理主机. 剧本中的roles你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! ...