Python全栈开发【基础三】
|
Python全栈开发【基础三】 |
本节内容:
- 函数(全局与局部变量)
- 递归
- 内置函数
| 函数 |
一、定义和使用
函数最重要的是减少代码的重用性和增强代码可读性
def 函数名(参数):
...
函数体
...
返回值
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
总结使用函数的好处:
1.减少代码重用
2.保持一致性,易维护
3.可扩展性
返回值
def 发送邮件():
发送邮件的代码...
if 发送成功:
return True
else:
return False
while True:
# 每次执行发送邮件函数,都会将返回值自动赋值给result
# 之后,可以根据result来写日志,或重发等操作
result = 发送邮件()
if result == False:
记录日志,邮件发送失败...
二、参数
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
def calc(x,y) #x,y即为形参
res = x**y
return res
c = calc(2,3) #2,3即为实参
print(c)
3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
注:位置参数必须在关键字参数前面
def calc(x,y):
res = x**y
return res
c = calc(y=2,x=3) #关键字参数
print(c)
def calc(x,y):
res = x**y
return res
c = calc(2,y=3) #2为位置参数,y=3为关键字参数
print(c)
4.默认参数
def calc(x,y=3): #y=3为默认参数后面函数可不传值
res = x**y
return res
c = calc(3) #可不传y值
print(c)
5.参数组
###############列表*args
def func(*args):
print args
# 执行方式一
func(11,22,33,55,66)
# 执行方式二
li = [11,22,33,55,66]
func(*li)
###############字典**kwargs
def func(**kwargs):
print kwargs
# 执行方式一
func(name='ocean',age=18)
# 执行方式二
li = {'name':'ocean', age:18, 'job':'python'}
func(**li)
三、 局部变量与全局变量
全局变量在函数里可以随便调用,但要修改就必须用 global 声明
##########全局变量与局部变量########
NAME = "aa"
def cn():
global NAME
NAME = "mm"
print(">>>>",name)
print(name) #输出aa
cn() #>>>mm
print(name) #mm
##########
#本例重点是函数只有调用时才运行
name = "aa"
#全局变量一般为大写用于区分局部变量,这里临时使用小写
def aa():
name = "bb"
def bb():
nonlocal name
#nonlocal用来在函数或其他作用域中使用外层(非全局)变量
name = "cc"
bb()
print(name)
print(name)
aa()
print(name)
| 递归 |
在函数内部,可以调用其他函数。如果一个函数在内部调用函数本身,这个函数就是递归函数。
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出,浪费内存
def calc(n):
print(n)
if int(n/2) ==0:
return n
return calc(int(n/2))
calc(10)
输出:
10
5
2
1
| 内置函数 |

###### 求绝对值 #######
a = abs(-95)
print(a)
###### 只有一个为假就为假 ########
a = all([True,True,False])
print(a)
###### 只有一个为真就为真 ########
a = any([False,True,False])
print(a)
####### 返回一个可打印的对象字符串方式表示 ########
a = ascii('0x\10000')
b = ascii('b\x19')
print(a,b)
######### 将整数转换为二进制字符串 ############
a = bin(95)
print(a)
######### 将一个数字转化为8进制 ##############
a = oct(95)
print(a)
######### 将一个数字转化为10进制 #############
a = int(95)
print(a)
######### 将整数转换为16进制字符串 ##########
a = hex(95)
print(a)
######### 转换为布尔类型 ###########
a = bool('')
print(a)
######### 转换为bytes ########
a = bytes('淡定',encoding='utf-8')
print(a)
######## chr 返回一个字符串,其ASCII码是一个整型.比如chr(97)返回字符串'a'。参数i的范围在0-255之间。 #######
a = chr(88)
print(a)
######## ord 参数是一个ascii字符,返回值是对应的十进制整数 #######
a = ord('X')
print(a)
######## 创建数据字典 ########
dict({'one': 2, 'two': 3})
dict(zip(('one', 'two'), (2, 3)))
dict([['two', 3], ['one', 2]])
dict(one=2, two=3)
###### dir 列出某个类型的所有可用方法 ########
a = dir(list)
print(a)
###### help 查看帮助文档 #########
help(list)
####### 分别取商和余数 ######
a = divmod(9,5)
print(a)
##### 计算表达式的值 #####
a = eval('1+2*2')
print(a)
###### exec 用来执行储存在字符串或文件中的Python语句 ######
exec(print("Hi"))
exec("print(\"hello, world\")")
####### filter 过滤 #######
li = [1,2,3,4,5,6]
a = filter(lambda x:x>3,li)
for i in a:print(i)
##### float 浮点型 #####
a = float(1)
print(a)
###### 判断对象是不是属于int实例 #########
a = 5
b = isinstance(a,int)
print(b)
######## globals 返回全局变量 ########
######## locals 返回当前局部变量 ######
name = 'nick'
def hi():
a = 1
print(locals())
hi()
print(globals())
########## map 遍历序列,对序列中每个元素进行操作,最终获取新的序列。 ##########
li = [11,22,33]
def func1(arg):
return arg + 1 #这里乘除都可以
new_list = map(func1,li) #这里map调用函数,函数的规则你可以自己指定,你函数定义成什么他就做什么操作!
for i in new_list:print(i)
###### max 返回集合中的最大值 ######
###### min 返回集合中的最小值 ######
a = [1,2,3,4,5]
s = max(a)
print(s)
n = min(a)
print(n)
####### pow 返回x的y次幂 ########
a = pow(2,10)
print(a)
a = pow(2,10,100) #等于2**10%100,取模
print(a)
######## round 四舍五入 ########
a = round(9.5)
print(a)
######## sorted 队集合排序 ########
char=[", "a","B","nick","c" ,"A", "_", "ᒲ",'a']
new_chat = sorted(char)
print(new_chat)
for i in new_chat:
print(bytes(i, encoding='utf-8'))
######## sum 求和的内容 ########
a = sum([1,2,3,4,5])
print(a)
a = sum(range(6))
print(a)
######## __import__ 通过字符串的形式,导入模块 ########
# 通过字符串的形式,导入模块。起个别名ccas
comm = input("Please:")
ccas = __import__(comm)
ccas.f1()
# 需要做拼接时后加 fromlist=True
m = __import__("lib."+comm, fromlist=True)
内置函数
| 匿名函数 |
Python全栈开发【基础三】的更多相关文章
- python全栈开发day38-css三种引入方式、基础选择器、高级选择器、补充选择器
一.昨日内容回顾 div:分割整个网站,很多块 (1)排版标签 (2)块级标签 独占一行 可以设置高和宽,如果不设置宽高,默认是父盒子的宽 span: (1) 小区域 (2)文本标签 (3)在一行内显 ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Python全栈开发【基础一】
Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
随机推荐
- JavaScript值类型与执行环境和垃圾处理机制
JavaScript变量分为基本值类型和引用值类型,基本值类型就是以下这五种:Boolean,Number,String,Null,Undefined.基本值类型和引用值类型具有以下特点: 1.基本值 ...
- Extjs 下拉框显示远程数据
var store = new HT.SyncStore({ baseParams : { itemName : '绩效考核_任务状态' }, url : __ctxPath + '/system/l ...
- 微博轻量级RPC框架Motan
Motan 是微博技术团队研发的基于 Java 的轻量级 RPC 框架,已在微博内部大规模应用多年,每天稳定支撑微博上亿次的内部调用.Motan 基于微博的高并发和高负载场景优化,成为一套简单.易用. ...
- NPOI的操作
public async Task<MemoryStream> ExportExcel(IList<fuquestionbank> _list, string pId, str ...
- Python 【第八章】:JavaScript 、Dom、jQuery
JavaScript 放置位置 body内部最下面,这样可以避免javascript链接失效时,长时间加载不到页面html内容 变量: var a =123 局部变量 a = 123 全局变量 作用域 ...
- 命令行提交本地项目到github上
1.github账号要有. 2.配置ssh key ① defaults write com.apple.finder AppleShowAllFiles -bool true 终端 显示隐 ...
- python笔记1-转义字符
print(r'dd"e"f')print(r'dd'e'f')print(r"dd"e"f")print(r"dd'e'f&qu ...
- subtext3插件安装
1.启用Package Control,利用它进行插件安装: 启用方法:菜单栏-view-show console 在弹出的输入框内,输入以下代码,按回车,稍后会出现package control安装 ...
- git操作---更新删除
1.更新git git pull <远程主机名> <远程分支名> 例如:git pull origin master 2.更新子模块 git submodule updat ...
- 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:
jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中:<dependency> <groupId>jdk.tool ...