Python的逻辑结构和函数
1.Python中的逻辑结构
①顺序执行
②选择执行:
if...elif...else...
没有switch..case..
③循环执行:
for...in...
while...
没有do..while...
注意: if/for/while后面不使用{ }, 而用 : 代替; 下面一句必须有缩进(可以是TAB或若干空格); 再下面一句如果也是执行主体必须有同样的缩进!
循环语句中,可以使用关键字:break(打断循环) 和 continue(继续下一次循环)
|
if( ): pass |
if( ): pass else: pass |
if( ): pass elif( ): pass else: pass |
|
while( ): pass |
||
|
for 临时变量 in list/tuple/range/set/dict : pass |
||
2.Python中使用函数
定义:函数用于封装一批需要反复执行的代码
创建函数:
def 函数名( 形参列表 ) :
函数主体
return 返回值
调用函数:
变量 = 函数名( 实参列表 )
注意:Python中实参的个数必须与形参个数完全一样!!!
默认值参数:
def add(n1, n2=200):
pass
调用可以有两种形式:
add(10) #n1=10; n2=200
add(10, 20) #n1=10; n2=20
注意:有默认值的形参必须声明在所有无默认值的形参之后!
可变数量的参数:
def add( *nums ):
pass #此处的nums是一个tuple
add(10, 30, 50)
-----------------------------------------------------
def add( **money ):
pass #此处的money是一个dict
add(jan=1000, feb=3000, may=5000)
关键字参数:
如果函数的形参过多,因为顺序很重要,不方便记忆,实参列表中可以使用关键字参数:每个实参都有一个名字——该实参对应的形参名
def connect(host, user, pwd, port, dbname):
pass
connect(user='root', pwd='123456', port=3306, dbname='xz', host='127.0.0.1')
3.变量的作用域问题 —— 难点
Python中,变量的作用域分为四类:简称LEGB
①Local:本地作用域,指定义在函数内的变量,只能在当前函数内使用
②Embeded:嵌入作用域,或称为闭包作用域,指定义在外部函数,但要供内部函数在外部使用的变量
③Global:全局作用域,指定义在任意函数外面,可供当前脚本中的任意函数使用
④Built-In:内置作用域,指Python解释器提供的变量和函数,可以在任意脚本中使用
总结:四种作用域下若都有某个变量,其优先级为:Local > Embeded > Global > Built-In
class:类,是一组事物共性的抽象——类是抽象的,没有具体值的
class = attributes + methods
object:对象,是从属于某个类的一个具体实例——对象是具体的
面向对象的三个基本特征:
①封装:把原本离散的数据和操作包装为一个整体——定义class
class Emp :
def __init__(self, age, ename) : #构造方法
self.age = age #封装属性
self.ename = ename #封装属性
def printInfo(self): #封装方法
print(self.ename, self.age)
e2 = Emp(20, 'Tom') #构建实例不要使用new关键字
②继承:让一个类自动获取另一个类中全部的成员,从而提高代码可维护性
class Emp:
pass
class Coder( Emp ): #Python支持多继承
def __init__(self)
super().__init__() #在子类构造方法内调用父类构造方法
c3 = Coder( ) #创建子类对象,其体内有一个父类的对象
③多态:一个方法,根据对象的不同(父或子),可能运行出多种结果
class Emp:
def printInfo():
pass
class Coder(Emp):
def printInfo(): #子类重写/覆盖了父类的同名方法
pass
-------------------------------------
e = Emp()
e.printInfo() #第一次调用
e = Coder()
e.printInfo() #第二次调用,与第一次调用结果不同
说明:
①Python中没有private/protected/public访问修饰符,如果想让一个属性只能在本类内部使用不能在类外使用:只需要在属性名前添加两个下划线即可;例如: self.__age = 30
②Python中没有static关键字,想实现类似的效果,可使用“类属性”——直接声明在类内(不是方法内),且不用self.来访问:
class Emp:
location = '中国' #类属性,访问方法:Emp.location
def __init__(self):
self.age = 30 #实例属性
5.Python中的异常处理
Exception:异常,可能发生也可能不发生错误!如果没发生程序可以正常执行下去;反之若发生了就可能导致程序终止执行。
示例:请用户从键盘输入两个数字,程序计算出数字的商,输出在屏幕上
try:
#可能发生异常的语句
#...
except XxError as e:
print(e)
except YyError as e:
print(e)
except Exception as e:
print(e)
finally:
#无法异常发生与否都要执行的收尾处理
|
如果需要根据业务逻辑,可以手工抛出错误: raise Exception('错误消息') 注意:手工抛出的错误也必须被try..except... |
Python的逻辑结构和函数的更多相关文章
- python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)
1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...
- 实现python中的map函数
假设Python没有提供map()函数,自行编写my_map()函数实现与map()相同的功能.以下代码在Python 2.7.8中实现. 实现代码: def my_map(fun,num): i = ...
- python中常用的函数与库一
1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python --- Python中的callable 函数
python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...
- python迭代器与iter()函数实例教程
python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...
- python基础——高阶函数
python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...
- 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...
- 如何查看Python的内置函数
经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...
随机推荐
- 递归复制&查看文件夹下的指定后缀的文件
<?php header("content-type:text/html;charset=utf8"); set_time_limit(0); $dir = "d: ...
- Windows环境,获取当前线程的ID,GetCurrentThreadId
GetCurrentThreadId 打印格式:0x%08lx 头文件:processthreadsapi.h (include Windows Server 2003, Windows Vista, ...
- Deep Snake : 基于轮廓调整的SOTA实例分割方法,速度32.3fps | CVPR 2020
论文提出基于轮廓的实例分割方法Deep snake,轮廓调整是个很不错的方向,引入循环卷积,不仅提升了性能还减少了计算量,保持了实时性,但是Deep snake的大体结构不够优雅,应该还有一些工作可以 ...
- 2018/12/08 L1-036 A乘以B Java
简单的题目, 就是考察简单的输入和乘法: import java.io.BufferedReader; import java.io.InputStreamReader; public class M ...
- 新手上路:Laravel-控制器基础
1.控制器在哪 Controller目录默认存放于app\Htpp\Controllers下,当然,你可以自定义这个目录: Controllers文件夹有一个控制器基类Controller.php,你 ...
- Python抓取新浪新闻数据(二)
以下是抓取的完整代码(抓取了网页的title,newssource,dt,article,editor,comments)举例: 转载于:https://blog.51cto.com/2290153/ ...
- 常用linux命令学习记录
批量替换文件中字符串: sed -i "s/ITSApi/icallApi/g" `grep ITSApi -rl icallbiz` 解释: 将icallbiz目录文件中包涵的I ...
- 【MySQL基础总结】常用函数库
常用函数库 数学函数 分类及含义 示例 字符串函数 分类及含义 示例 日期时间函数 分类及含义 示例 条件判断函数 分类及含义 示例 系统函数 分类及含义 加密函数 分类及定义 其他常用函数 分类及含 ...
- STM32 CubeIDE无法进行调试的问题
解决了由于一个很容易忽视的细节最终导致系统配置存在错误造成STM32 CubeIDE无法进行调试的问题: 文章目录 来龙去脉 解决方案 反思 来龙去脉 在享受CubeIDE快速和便捷的服务之后,生成了 ...
- Kitty Cloud(HTTP_RPC)的全局异常处理
项目地址 https://github.com/yinjihuan/kitty-cloud 异常处理不用我讲,大家都清楚.单独的异常处理太繁琐,全局异常处理可以在一个应用中统一进行异常的处理,非常方便 ...