Python 自学笔记 day04 -- 函数

函数

生成函数

1. 定义函数

def function(para1, para2)
"""    # 注释函数功能、参数、结果
function: 

para1:
para2:
return:
"""
	result = para1 + para2
	return result

2. 重构函数

Refactor >>> Extract Method #将代码重构为函数

位置参数(positional argument) / 关键字参数(keyword argument)

传递参数时:按位置传递参数值 / 参数名 = 参数值

定义函数时使用 *, 隔离参数

*, 前面的参数为位置参数,按位置传递参数值
后面的参数为命名关键字参数,必须按 “参数名 = 参数值” 的形式传参
function(args ) # 可变参数: 将参数打包成元组传入function,可传入任意数量位置参数
function(**args) # ** 关键字参数:将参数以键值对的形式打包成字典传入function,可传入任意数量命名关键字参数

一等函数 # Python中的函数是高阶函数

  • 函数可作为函数的参数
  • 函数可作为函数的返回值
  • 函数可赋值给变量
    把函数作为函数的参数或者返回值,通常称之为高阶函数,可实现对原有函数的解耦合操作。
def fun(a, b) 
def calc(init, fun, *args, **kwargs)	   # 将不缀 () 的fun函数名作为参数传入calc函数,fun()意味要函数的返回值

Lambda函数 # 没有名字且一句话就能写完的函数

def add(x, y)
	return x + y
lambda x, y : x + y    # 两函数等效

递归函数 # 函数直接或间接调用了自身

  • 递归公式 # 调用自身
  • 收敛条件 # 停止递归的条件
    递归函数一定要收敛,尽快结束

栈 (FILO: first in last out) # 512k ~ 1MB 指针或索引

对象的引用通常存放于栈,通过引用可访问对象并向其发出消息
函数有属于自己的栈结构,保存现场就是将整个栈结构保存起来
保存现场 —> (入栈) 调用函数 —> 函数执行结束或执行return (出栈) —> 恢复现场
官方CPython默认调用栈为1000层,无休止调用会耗尽栈空间,导致程序崩溃

import sys
sys.setrecursionlimit(99999) # 不建议

堆(heap) # 内存中不被其他程序占用的空间

对象一般储存于堆
垃圾对象 # 自动化内存管理回收

常量池

foo # fuck up
bar # beyond all recognization

调用包和函数

使用包(python package) --> 通过模块来管理函数
包 --> 文件夹
模块 --> python文件
import # 调取
from math import factorial as f # 将数学包中导入函数 factorial 并别名为f as == alias(别名)

系统包

math # 数学相关

getpass #

getpass.getpass() # 用掩码接收变量

time # 时间模块

time.time() # 调取当前时间
time.sleep(0.5) # 暂停500毫秒

random
random.randrange(a,b) # 导入[a,b)范围内的随机数

random.sample(lists,a) # 从list列表中无放回抽样a个数据
random.choices(lists,k=a) # 从list列表中有放回抽样a个数据(k=a 命名关键字参数,name = value 方式传参)
random.choice(lists) # 从list列表抽1个数据(choice:单数抽一个数据;choices:复数抽一个列表)
random.shuffle(lists) # 将list列表随机乱序

os # 操作系统

os.system(‘cls’) # 清屏

string # 字符串

string.ascii_lowercase # 小写字母

系统函数

range(a,b,c)    # [a,b) 范围内以c为步长,逐个取值。当 c<0 and a>b,降序取值
sum()    # ()内所有值求和
max/min(list,key=)    # 列表中key最大/最小值
sorted(dict, key=dict.get)    # 根据字典dict的值进行排序,返回由升序键组成的列表
len()    # ()内变量的长度
type()    # 返回数据类型
ord()    # 将字符处理为对应的编码
chr()    # 将编码处理为对应的字符
input().lower()    # 将输入内容变为小写字母
enumerate()    # 处理列表使可以取到序号与值
zip(a, b)    # 将a,b组成一个二元组
True if bool else False    # 三元条件运算
del    # 删除元素
break    # 中断、跳出循环
pass    # 跳过代码  
end = '\t'    # 制表符
a, b = b, a    # a, b交换数据
datetime.now()    # 获得当前时间日期
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值