十五. Python基础(15)--内置函数-1

十五. Python基础(15)--内置函数-1

1 ● eval(), exec(), compile()

执行字符串数据类型的python代码 检测#import os 'import' in code

eval : 有返回值, 适用于执行计算语句, 例如eval("4+3").

exec : 没有返回值, 适用于执行流程控制语句, 例如exec(a = b if b>c else c)

complie:

code1 = 'for i in range(0,3): print(i)'

compile1 = compile(code1, '', 'exec') # 中间表示filename的参数即使没有也要有一个空字符串(其实也可以胡乱写一个字符串)

print(compile1) # <code object <module> at 0x0000000002802270, file "", line 1>

exec(compile1)

exec(compile1)

'''

0

1

2

0

1

2

'''

compile(str ,filename ,kind )

compile()将一个字符串编译为字节代码,

str是将要被编译的字符串,

filename是定义该字符串变量的文件,

kind参数指定了代码被编译的类型: eval, single, exec

'eval'指一个表达式.

'single'指单个语句,

'exec'指多个语句,

返回一个代码对象,该对象也可以被传递给eval()函数和exec语句来执行

 

预编译, 可以有效提高程序的执行效率

eval(), exec()compile()不要随便使用, 若使用, 也要做好充分的测试.

 

2 ● print()函数扩展

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

print("枯藤", "老树", "昏鸦", sep = ",", end = "←")

# 枯藤,老树,昏鸦←

# sep默认为一个空格" ", end默认为一个换行符

import time

for i in range(0,101,10):

     time.sleep(1) # 便于观察

     char_num = i//2     #打印多少个'*'

     #per_str = '\r%d%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%d%% : %s'%(i,'*'*char_num)

     # 等价于:

     #per_str = '\r%d%% : %s' % (i, '*' * char_num) if i != 100 else '\r%d%% : %s\n' % (i, '*' * char_num)

     # 或者是:

     per_str = '\r%d%% : %s' % (i, '*' * char_num)

     # 但不能是:

     print(per_str,end='', flush=True)

 

# 100% : **************************************************

# 每次循环都是从头开始打印在控制台上的

f = open('print_test', 'a', encoding = 'utf-8')

print("This is a log!", file = f)

# 用print写日志文件.

 

3 ● 有关换行(line feed), 回车(carriage)

\r--CR(carriage return, 回车)--把光标移到所在行开头

\n--LF(line feed, 换行)--把光标移到下一行开头。

\r\n—CR+LF—回车+换行

 

4 ● 有关内置函数hash()

url = 'https://www.baidu.com/'

from urllib.request import urlopen

content = urlopen(url).read()

dic = {hash(url):content}

for key in dic:

    print(key)

print(hash(url))

'''

4122514777272343416

4122514777272343416

# 在运行一次, 得到:

8389699687043686450

8389699687043686450

'''

# 在python的一次执行中, 对于相同的可hash的对象, hash()函数返回的都是相同的数字(因为对象在一个生命周期内)

 

5 ● filter()函数和map()函数

# filter()函数, 类似于列表推导式

def func1(n):

     if n % 2 == 0:

         return True

li = [3,2,6,9,8]

 

print(filter(func1, li)) # filter()方法返回一个迭代器

print(list(filter(func1, li)))

 

'''

<filter object at 0x00000000025E99B0>

[2, 6, 8]

'''

def func2(n):

     if n % 2 == 0:

         return n

li2 = [3,2,6,9,8]

 

print(list(map(func2, li2)))

'''

[None, 2, 6, None, 8]

'''

 

 

def func3(n):

     return n**2

 

print(list(map(func3, li2)))

'''

[9, 4, 36, 81, 64]

'''

典型案例: 删除 None 或者空字符串

# def deter(m):

#     if m and len(m.strip()) > 0: # 注意m必须写在len(m.strip()) > 0之前, 否则会被警示None无法计算长度

#         return True

 

# 等价于:

def deter(m):

    return m and len(m.strip())

 

lst = ['test', None, '', 'str', ' ', 'END']

 

print(list(filter(deter, lst)))

'''

['test', 'str', 'END']

 

6 ● 内置函数__import__()

__import__('a')        # 导入 a.py 模块

转载于:https://www.cnblogs.com/ArrozZhu/p/8393713.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作226:for循环逻辑

<el-form v-for"(cep,index) in form.detpartment_amount" ><el-form-item label"部门账号"><el-input v-model"cep.name"></el-input></el-form-item><el-form-item label"传播量"><el-inpu…

myeclipse中添加Oracle数据库

打开Myeclipse后点击如图右上方进入MyEclipse Database Explorer视图 在如图空白处鼠标右击后点选new进入Create a new connection driver界面 在Driver template:中下拉选中Oracle(Thin driver); 在Driver name中填写你希望的名称&#xff1b; 在Connection URL中将后面…

SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

SSM(SpringSpringMVCMybatis)框架环境搭建(整合步骤)(一) 1. 前言 最近在写毕设过程中&#xff0c;重新梳理了一遍SSM框架&#xff0c;特此记录一下。 附上源码&#xff1a;https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下这三个框架分别是干什么…

Spring事务管理详解_基本原理_事务管理方式

Spring事务管理详解_基本原理_事务管理方式 1. 事务的基本原理 Spring事务的本质其实就是数据库对事务的支持&#xff0c;使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交&#xff0c;那在没有Spring帮我们管理事务之前&#xff0c;我们要怎么做。 C…

ORA-28000: the account is locked

首先使用具有sysdba权限的账户登陆&#xff0c;如sys账户和system账户 新建一个sql窗体&#xff0c;并执行语句解锁被锁定的账户&#xff0c;如我这里sgyw账户&#xff1a; alter user sgyw account unlock; 执行成功后再次用这个账户就可以登陆系统了。

工作227:小程序学习1开始布局页面

<template><view class"box u-p-l-35 u-p-r-35 "><view class"title"><text>请选择您要管理的市场</text></view><view :class" [u-flex,u-row-center,{choose_market: selectIndex 0},{market : selectIndex…

windows下安装和使用scrapy

首先&#xff0c;要确保已经正确安装了python环境&#xff0c;并安装了pip包 接着&#xff0c;打开cmd或者powershell &#xff0c;输入命令 pip install scrapy 。安装完之后 运行scrapy性能测试命令&#xff1a; scrapy bench 。此时可能出现“import win32api&#xff0c;Im…

spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)

1. 声明式事务管理分类 声明式事务管理也有两种常用的方式&#xff0c; 一种是基于tx和aop名字空间的xml配置文件&#xff0c;另一种就是基于Transactional注解。 显然基于注解的方式更简单易用&#xff0c;更清爽。 2. spring事务特性 spring所有的事务管理策略类都继承自org.…

oracle中如何设置主键并且让其自动增长

1、创建数据库 create table USERINFO ( USERNO NUMBER not null, USERNAME NVARCHAR2(20), USERPWD NVARCHAR2(20) ) 2、创建触发器 create sequence SEQ_Userinf start with 1 increment by 1 nomaxvalue nominvalue nocache; CREATE OR REPLACE TRIGGER tg_test BEFORE …

工作228:小程序学习2开始布局页面2

<template><view class"box u-p-l-35 u-p-r-35 "><view class"title"><text>请选择您要管理的市场</text></view><view :class" [u-flex,u-row-center,{choose_market: selectIndex 0},{market : selectIndex…

AngularJs通过路由传参解决多个页面资源浪费问题

在实际开发中会遇到很多类似模块界面大体都一致只是极少的细节部分不一样&#xff0c;这时不管是在html页面还有js及数据交互的时候我们就没必要因为这些不同的页面分出不同的文件&#xff0c;这样很浪费内存及效率&#xff0c;于是我在开发中想到一种办法&#xff1a;通过ng路…

mybatis BindingException: Invalid bound statement (not found)

错误截图 解决措施 此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的。 通常我们在配置SqlSessionFactory时会有如配置 1 <!-- 配置SqlSessionFactory -->2 <bean class"org.mybatis.spring.SqlSessionFactoryBean">…

myeclipse快捷生成代码块

1、快捷键啊 altshifts 2、右键 -——Source

前端学习(2712):重读vue电商网站32之让菜单栏展开与折叠

通过点击一个按钮&#xff0c;让侧边栏进行展开与折叠。通过 isCollapse 的值来动态变化侧边栏的宽度。 其中 cursor: pointer 设置是为了让鼠标放在折叠与展开处会有一个手指指向。 letter-spacing: 0.2em 是为了让 ||| 有一定间隔

Myeclipse下Maven的配置

1.配置    window--Preferences JDK的配置(执行命令&#xff0c;控制台可能无法输出) -Dmaven.multiModuleProjectDirectory$MAVEN_HOME 新建 Maven Project 转载于:https://www.cnblogs.com/xdalsh/p/8399299.html

Hibernate访问数据库,HibernateTemplate操作数据库,实现增删改查

1、首先创建封装Hibernate的Dao类 import java.io.Serializable; import java.util.List; import javax.annotation.Resource; import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.stereotype.Component; Component public class U…

前端学习(2713):重读vue电商网站33之实现首页路由重定向

我们想要在登录之后重定向到 /welcome 路径&#xff0c;于是需要添加子路由children 属性&#xff0c;然后设置 redirect重定向到我们的子路由。 然后在我们组件 Home.vue 的右侧主体区域&#xff0c;放置一个路由占位符 router-view 即可。

@Value(${xxxx})注解的配置及使用

代码中的用法 Spring 通过Value注解获取*.porperties文件code的内容&#xff0c;然后赋值给使用该注解的Code属性上。 Value("${code}") private String Code; 看一下这个resource.properties文件&#xff08;resource为文件名称&#xff09; code002 spring中的配置…

国家语言,语言代码,locale id对应表

国家语言&#xff0c;语言代码&#xff0c;locale id对应表。比如 en_US对应的id为1033&#xff0c; 中文的localezh_CN&#xff0c;id2052. LocaleLanguagecodeLCIDstringLCIDDecimalLCIDHexadecimalCodepageAfrikaansafaf10784361252Albaniansqsq1052 1250Amharicamam1118 A…

myeclipse链接数据库,SQL语句实现增删改查

1、创建properties文件 #oracle #driveroracle.jdbc.OracleDriver #urljdbc\:oracle\:thin\:localhost\:1521\:xe #usernamesystem #passwordmanager #mysql drivercom.mysql.jdbc.Driver urljdbc\:mysql\://192.168.0.121\:3306/test?user\root&password\root&chara…