2020-10-14

                                              ***函数知识***

函数入门

什么是函数:
函数是一个功能、是一个行为、是一个动作。
函数就是一个具有名称的功能代码的集合。
一段用来解决某一个问题的代码或者指令,具有名称的集合。

为什么使用函数:
减少代码重复!!!

python中如何使用函数

def 函数名称([参数列表]):
	# 函数体
	# 函数得到一个结果,如果调用者需要,则需要返回这个结果
	# return 返回值

函数调用:
函数名称([实参列表])
|-- 函数的分类
|–

|-- 全局变量在函数中的使用
|-- 函数调用的本质(内存模型)
|-- 引用传递和值传递
|-- Python函数的参数
|-- 函数递归

|-- 函数的分类
|-- 有无参数
|-- 有参函数
|-- 无参函数
|-- 是否存在返回值
|-- 有返回值的函数
|-- 无返回值的函数
|-- 定义者
|-- 系统函数
|-- 第三方函数
|-- 自定义的

以收快递为例:
	receive_express

全局变量在函数中的使用

全局变量(global variable):定义在py文件中
局部(本地)变量(local variable):定义在函数或者类内部的就是局部变量

注意:在python,函数内部不允许修改全局变量,如果要在Python中强制修改全局变量,
	在函数第一行,使用 "global 变量名称" 声明

函数调用过程:
函数在python中,本质就是一个对象!!!

函数的调用叫做压栈(push)!!!
调用完成后函数就需要立刻出栈(pop)!!

引用传递和值传递
值传递,值传递仅仅会传递变量的值,不会对变量本身产生影响
引用传递,引用传递传递是对象的地址(也就是对象),因此会对对象的值产生影响
函数的分类
|-- 全局变量在函数中的使用
|-- 函数调用的本质(内存模型)
|-- 引用传递和值传递
|-- Python函数的参数
|-- 函数递归

|-- 函数的分类
|-- 有无参数
|-- 有参函数
|-- 无参函数
|-- 是否存在返回值
|-- 有返回值的函数
|-- 无返回值的函数
|-- 定义者
|-- 系统函数
|-- 第三方函数
|-- 自定义的

以收快递为例:
	receive_express

引用传递和值传递
值传递,值传递仅仅会传递变量的值,不会对变量本身产生影响
引用传递,引用传递传递是对象的地址(也就是对象),因此会对对象的值产生影响

函数的参数问题
|-- 默认值
|-- 可变参数
|-- 命名参数
|-- 万能参数
|-- 函数作为参数传递到函数内部的问题
|-- lambda表达式(匿名函数)
|-- 偏函数和递归
|-- 闭包(后面再说)

python的main函数:
if name == ‘main’:
# python是一门脚本语言,所以它的main函数和c或者java等不一样
# python中的main函数并不是代码开始执行的位置,写在main函数中的代码一般是测试代码,用来测试当前模块
# 并不能导入到其他模块中

默认值参数:
在函数定义时,如果一些参数的值,一般都是不是不变某个值,则可以将该参数设置为默认参数,这样减少调用者的麻烦

可变参数:
*变量

关键字参数
**变量名称

万能参数
*args, **kwargs

字典的遍历方式:

>>> d = {'nickname': '帅哥刘', 'age': 16, 'gender': '男'}
>>>
>>>
>>> d
{'nickname': '帅哥刘', 'age': 16, 'gender': '男'}
>>>
>>> for k in d:
...     print(k)
...
nickname
age
gender
>>> for k in d:
...     print(k, d[k])
...
nickname 帅哥刘
age 16
gender 男
>>> for k in d:
...     print(k, d.get(k))
...
nickname 帅哥刘
age 16
gender 男
>>> for k in d.keys():
...     print(k, d.get(k))
...
nickname 帅哥刘
age 16
gender 男
>>>
>>> for k in d.values():
...     print(k)
...
帅哥刘
16
男
>>> for k,v in d.items():
...     print(k, v)
...
nickname 帅哥刘
age 16
gender 男
>>> for (k,v) in d.items():
...     print(k, v)
...
nickname 帅哥刘
age 16
gender 男

函数作为参数传递到函数内部的问题:
python中,函数本质是一个对象,python中,函数的参数类型是python中的所有类型都可以。

结论:在python,函数可以作为参数传递到函数内部去

lambda表达式:
# 注意:如果需要返回值,不用添加return,会自动返回
lambda [参数列表]:函数体

lambda作用:
	1、在python实现匿名函数
	2、简化了编程

缺点:
	1、降低了代码的可读性,提高代码的复杂度,提高了代码的维护成本

偏函数:

将一个函数的参数修改或者增加默认值,就称为偏函数
import  functools
new_int = functools.partial(int, base=8)
>>> new_int("1234")
668

递归:
函数自身调用自身

python的模块

模块(module):
在python中,xxx.py就是一个模块

模块的使用
模块的导入问题

常见的系统内置模块的使用
|-- math
|-- random
|-- uuid
|-- os
|-- sys
|-- time
|-- datetime
|-- calendar
|-- hashlib
|-- hmac
|-- base64
……

math:
该模块主要用于数学和相关计算的一个模块
属性:
pi # 圆周率
e # 自然常数
方法:
三角函数 sin cos …
对数 log log10 …
ceil() # 向上取整
floor() # 向下取整
fabs # 绝对值
sqrt # 开平方
pow # 幂次方

round全局函数,主要用于四舍五入

random
random.random() # 随机[0~1) 区间
random.randint() # [a, b] 区间的随机整数
random.uniform # [a, b] 区间的随机数
random.choice(容器) # 随机选择一个元素
random.shuffle(容器) # 洗牌,随机打散数据

1.计算函数

abs()–取绝对值
在这里插入图片描述

max()–取序列最大值,包括列表

在这里插入图片描述

min()–取序列最小值

len()–取长度

round()–修改精度,如果没有,默认取0位

在这里插入图片描述

range()快速生成一个列表
2.其他函数

callable()–返回是否可调用返回true或false
在这里插入图片描述

isinstance(a,type)—判断前面的是否是后面的这种类型,返回true或false
在这里插入图片描述

cmp(a,b)—判断ab是否相等,相等返回0,A<B返回-1,A>B返回1

range()–快速生成一个列表,类型为list

xrange()—快速生成一个列表,类型为xrange

3.类型转换函数

type()

int()

long()

float()

complex()–转换成负数

hex()–转换成十六进制

oct()–转换成八进制

chr()–参数0-252,返回当前的ASCII码

ord()–参数ASCII码,返回对应的十进制整数

4.string函数

str.capitalize()–对字符串首字母大写
在这里插入图片描述

str.replace(a.b)—对字符串a改为b
在这里插入图片描述

str.split()—对字符串进行分割,第一个参数是分隔符,后面参数是分割几次。
在这里插入图片描述

string函数导入使用

5.序列函数

filter()–筛选返回为true返回成序列

lambda–定义函数

zip()—对多个列表进行压缩组合成一个新列表,但是如果多个列表的元素个数不同,组合的结果按最少元素的进行组合

map–对多个列表进行压缩组合成一个新列表,但是如果多个列表的元素个数不同,结果是将所有的元素取出来,缺少的以None代替。如果是None,直接组合,如果是函数,可以按函数进行组合

reduce()–对每个元素先前两个执行函数,然后结果和后一个元素进行函数操作,如阶乘,阶加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值