Python小白学习之路(十六)—【内置函数一】

将68个内置函数按照其功能分为了10类,分别是:

  • 数学运算(7个)
    • abs()    divmod()    max()    min()    pow()    round()    sum()
  • 类型转换(24个)
    • bool()    int()    float()    complex()    str()    bytearray()
    • bytes()   memoryview()   ord()   chr()   bin()   oct()   hex()
    • tuple()   list()   dict()   set()   frozenset(  ) enumerate()
    • range()   iter()   slice()   supper()   object()
  • 序列操作(8个)
    • all()      any()   filter()   map()   next()   reversed()   sorted()   zip()
  • 对象操作(7个)
    • help() dir() id() hash() type() len() ascii() format() vars()
  • 反射操作(8个)
    • _import__() isinstance() issubclass() hasattr() getattr() setattr() delattr() callable()
  • 变量操作(2个)
    • globals() locals()
  • 交互操作(2个)
    • print() input()
  • 文件操作(1个)
    • open()
  • 编译执行(4个)
    • compile() eval() exec() repr()
  • 装饰器(3个)
    • property() classmethod() staticmethod()


一、数学运算类(7个)

abs()

  • Return the absolute value of the argument.取绝对值
print(abs(-1))
#执行结果
1

divmod()

  • divmod(x, y) -> Return the tuple (x//y, x%y).返回商和余数
print(divmod(5, 2))
#执行结果
(2, 1)

max()

  • 返回最大值
  • 处理的对象为可迭代对象
  • (相当于一个for循环取出每一个元素进行比较)
  • 不同类型之间是不能进行比较的
  • 每个元素进行比较时,是从每个元素的第一个位置开始依次比较
  • (如果一个位置分出大小,后面的位置可以不用进行比较便可以得出比较结果)
#用法一:
num_1 = [1,38,2,0,4,7]
print(max(num_1))

#用法二:传入对象为字典,默认比较的是字典的key
age_dic={'age1':14, 'age2':3, 'age3':45, 'age1':18} 
print(max(age_dic)) 
print(max(age_dic.values())) # 比较的是字典的values
#执行结果
age4
45

用法三:
任务:
将给定名单中年龄最大的找出来

people_list = [
{'name':'xhg','age':18},
{'name':'aaa','age':10},
{'name':'bbb','age':30},
{'name':'ccc','age':14},
]
print(max(people_list, key = lambda dic:dic['age']))
#执行结果
{'name': 'bbb', 'age': 30}
'''
#程序分析
#这段代码的理解 max(people_list, key = lambda dic:dic['age'],实际上进行了这样一个操作
ret = []
for item in people_list:
ret.append(item['age'])
print(max(ret))
'''

 

min()

  • 返回可迭代对象的元素中的最小值或者所有参数的最小值
  • 具体用法同max()函数


pow()

  • Equivalent to x**y (with two arguments) or x**y % z (with three arguments)
  • 两个参数,做幂运算
  • 三个参数,先做幂运算,再取余
print(pow(2,3))
#执行结果
8
print(pow(2,3,3))
#执行结果
2

 

round()

  • 对浮点数进行四舍五入求值
  • 第二个参数为可选参数,如果不填默认取整,参数代表保留的位数
print(round(3.1415926))
print(round(3.1415926, 3))
#执行结果
3
3.142

 

sum()

 

  • 对可迭代对象中的每个元素求和
  • 可迭代对象中的元素类型是数值
print(sum([1, 2, 3, 4, 5]))
#执行结果
15

 

二、类型转换(24个)

bool() 

 

  • 根据传入的参数的逻辑值创建一个新的布尔值
  • None '' () {} [] 0 ==>False
  • 其余 ==>True
print(bool(None))
print(bool('xhg'))
#执行结果
False
True

 

int()

 

  • 根据传入的参数创建一个整数
print(int('123')) #将字符串转化为整形
print(int(123.9)) #取整

#执行结果
123
123

 

float()

 

根据传入的参数创建一个新的浮点数

print(float('123.78'))    #将字符串转化为浮点型
print(float(123))    #将整形转换成浮点型

#执行结果
123.78
123.0

 

complex()

 

  • 根据传入参数创建一个新的复数
  • 有两个参数:
  • 第一个参数是实部;第二个参数是虚部
  • 不填参数,默认输出为 0j
  • 只填一个参数 a,则输出 a + 0j
print(complex())
print(complex(1))
print(complex(1, 2))

#执行结果
0j
(1+0j)
(1+2j)

 

str()

 

  • 将目标参数转化为字符串
print(str(123))
print(type(str(123)))
print(str([1, 2, 3, 4, 'xhg']))
print(type(str([1, 2, 3, 4, 'xhg'])))

#执行结果
123
<class 'str'>
[1, 2, 3, 4, 'xhg']
<class 'str'>

 

bytearray()

 

  • 根据传入的参数创建一个新的字节数组
  • 可传入的参数:
    • 字符串(使用指定编码方式编码);bytearray()然后使用str.encode()将字符串转换为字节。
    • 如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
    • 如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
    • 如果它是可迭代的,那么它必须是range 0 < = x < 256的整数的迭代,它被用作数组的初始内容

 

a = bytearray('小伙郭', encoding = 'utf -8' ) #字符串需要指定编码方式
print(a, len(a))
b = bytearray('小伙郭', encoding = 'gbk' )
print(b, len(b))
c = bytearray([1,2,3,255]) #如果元素大于255,将会报错
print(c, len(c))

#执行结果
bytearray(b'\xe5\xb0\x8f\xe4\xbc\x99\xe9\x83\xad') 9
bytearray(b'\xd0\xa1\xbb\xef\xb9\xf9') 6
bytearray(b'\x01\x02\x03\xff') 4

 

bytes()

  • 根据传入的参数创建一个新的不可变字节数组
  • 具体用法及传入的参数同函数bytearray()

ord()

chr()

  • 返回Unicode字符对应的整数
  • 返回整数所对应的Unicode字符
print(ord('d'))
print(chr(100))
#执行结果
100
d

 

bin()整数-->2进制字符串
oct()整数-->8进制数字符串
hex()整数-->16进制字符串

print(bin(5))
print(oct(10))
print(hex(15))

#执行结果
0b101
0o12
0xf

 

tuple()

 

  • 根据传入的参数创建一个新的元组
  • 传入的参数为空或者是可迭代对象
print(tuple())
print(tuple('123456'))
print(tuple([1, 2, 'a', 'b']))

#执行结果
()
('1', '2', '3', '4', '5', '6')
(1, 2, 'a', 'b')

 

list()

 

  • 根据传入的参数创建一个新的列表
  • 传入的参数为空或者是可迭代对象
print(list())
print(list('123456'))
print(list([1, 2, 'a', 'b']))

#执行结果
[]
['1', '2', '3', '4', '5', '6']
[1, 2, 'a', 'b']

 


dict()

  • 根据传入的参数创建一个新的字典
  • 可以由下列四种方式传入参数:
    • 不传入参数,建立空字典
    • 通过映射函数创建字典
    • 通过键值对来创建字典
    • 通过可迭代对象来创建字典

 

print(dict())
print(dict(zip(['key1', 'key2'],[1, 2])))
print(dict(key1 = 'a', key2 = 'b'))
print(dict([['key1',1], ['key2','b']]))

#执行结果
{}
{'key1': 1, 'key2': 2}
{'key1': 'a', 'key2': 'b'}
{'key1': 1, 'key2': 'b'}

 

set()

 

  • 根据传入的参数创建一个新的集合
  • set() -> new empty set object
  • set(iterable) -> new set object

 

print(set())
print(set('123456'))
print(set([1,2,3,'a','b']))

#执行结果
set()
{'3', '1', '6', '2', '5', '4'}
{1, 2, 3, 'b', 'a'}

 

frozenset()

 

  • 根据传入的参数创建一个新的不可变集合
print(frozenset())
print(frozenset('123456'))

frozenset()
frozenset({'5', '1', '4', '3', '6', '2'})

 

range()

 

  • 根据传入的参数创建一个新的range对象
  • python3里面,需要通过for循环来创建range()每一个元素
  • range(a,b)-->左闭右开
  • range(stop) -> range object
  • range(start, stop[, step]) -> range object
for item in range(5):
print(item)
for item in range(10, 15):
print(item)
for item in range(0, 100, 20):
print(item)

#执行结果
0 1 2 3 4 
10 11 12 13 14
0 20 40 60 80

写在后面:

内置函数总结好多哦

今天眼睛看电脑时间太长了   累

明天继续总结吧

今天也就总结了一半的样子

最近发现之前的知识有些忘记了

需要返回去再看看了

开题报告写的不是很好  今天老师要求重新写

好好加油吧

明天就是周末啦   可以粗去吃好吃的  放松放松

更重要的  双11   买买买

 

转载于:https://www.cnblogs.com/guoruxin/p/9937491.html

<think>好的,我现在需要帮助用户解决关于Dify循环实现的问题。首先,我需要明确用户的具体需求。他们提到“dify 循环实现”或“dify 如何处理循环”,但Dify本身可能没有直接称为“循环”的功能,所以需要结合现有文档中的信息来推断可能的解决方案。 根据用户提供的引用内容,Dify工作流中有迭代节点[^1]。这可能类似于编程中的循环结构,用于重复执行某个任务。例如,在处理列表数据或需要多次执行同一操作时,迭代节点可以派上用场。我需要详细解释迭代节点的配置和使用步骤,确保用户能够理解如何设置循环次数或遍历数据集。 另外,用户可能对如何处理循环中的错误或性能问题感兴趣。引用[2]提到在Dify中处理PEM文件的问题,这可能涉及在循环中正确处理数据格式,避免错误积累。需要提醒用户在循环中注意错误处理和资源管理,确保每次迭代的稳定性。 引用[3]中的例子展示了如何结合FastAPI和Selenium进行实时监控并生成GIF,这可能涉及循环截取浏览器内容。虽然Dify本身可能不直接控制这类循环,但可以通过外部脚本或定时任务触发工作流,模拟循环执行。这部分需要说明如何将外部循环机制与Dify结合使用。 接下来,我需要组织回答结构。首先介绍迭代节点的基本概念和配置步骤,然后讨论循环中的数据处理和错误处理,最后补充外部触发循环的方法。同时,生成相关问题以帮助用户进一步探索,比如优化循环性能或处理复杂数据结构。 需要确保回答符合格式要求,使用正确的中文表达,行内公式用$...$,独立公式用$$...$$,但当前问题不涉及数学公式,所以可能不需要使用。同时,引用标识要自然地添加到相关段落末尾,如、[^2]、[^3]。 最后,检查是否有遗漏点,比如Dify的其他循环相关功能或用户可能遇到的常见问题,确保回答全面且易于理解。</think>在Dify中处理循环逻辑主要通过**迭代节点**实现,以下是具体实现方式和应用场景的解析: ### 一、Dify循环实现机制 Dify通过**工作流设计器**中的迭代节点处理循环需求,其核心原理类似编程中的`for循环`。迭代节点可遍历以下数据类型: - 数组列表:`["A","B","C"]` - 字典集合:`{"key1":"value1", "key2":"value2"}` - 数值范围:通过`range()`函数生成序列 配置示例: ```python # 模拟迭代节点的数据输入 input_data = { "dataset": [1,2,3,4,5], "process_logic": "item * 2" # 对每个元素执行乘以2的操作 } ``` ### 二、迭代节点的关键配置步骤 1. **数据源绑定**:将数组/字典类型变量连接到迭代节点的输入端口 2. **循环变量命名**:设定当前元素的变量名(默认为`item`) 3. **子流程设计**:在迭代节点内部构建需要重复执行的逻辑模块 4. **结果聚合**:通过`outputs`收集所有迭代结果,支持数组或对象格式 $$ \text{总耗时} = \sum_{i=1}^{n}(单次迭代时间_i) + 系统开销 $$ ### 三、循环中的特殊处理 1. **错误中断控制**: - 启用`continueOnError`参数可跳过失败迭代 - 通过`try-catch`模块包裹敏感操作 2. **并行优化**: ```python # 伪代码示例 Parallel.forEach(dataset, lambda item: process(item)) ``` 3. **结果过滤**: ```python filtered = filter(lambda x: x%2==0, processed_results) ``` ### 四、应用场景案例 1. **批量文件处理**:遍历存储桶中的文件列表进行格式转换 2. **数据清洗**:对数据库查询结果集进行逐条校验 3. **API轮询**:定时循环调用第三方接口直到满足特定条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值