Python基础之函数

目录
  • Python基础之函数
    • 一、函数相关的基础知识
      • 1.函数的语法结构
      • 2.函数的定义与调用
      • 3.函数的分类
      • 4.函数的返回值
      • 5.函数的参数
      • 6.名称空间
      • 7.名字的查找顺序以及实际案例
      • 8.global与nonglobal
      • 9.函数名的多种用法
      • 10.闭包函数
    • 二、关于装饰器
      • 1.装饰器简介
      • 2.装饰器的模板(重点 务必掌握)
      • 3.关于语法糖
      • 4.递归函数
      • 5.匿名函数
      • 6.常见内置函数
      • 7.重要内置函数

Python基础之函数

​ 关于函数定义 首先说一下循环吧 循环就是相同的代码在同一个位置反复执行 而函数是相同的代码在不同的位置反复执行(相同的代码不是真正的一模一样而是可以通过传入不同的数据做出不同的改变) 函数相当于工具(具有一定的功能) 什么时候想用就直接拿出来使用

一、函数相关的基础知识

1.函数的语法结构

def 函数名(参数):
    '''函数注释'''
    函数体代码
    return 返回值
def:定义函数的关键字
函数名:命名等价于变量名
参数:可有可无 主要是在使用函数的时候规定要不要外界传数据进来
函数注释:类似于工具说明书
函数体代码:是整个函数的核心 主要取决于程序员的编写
return:使用函数之后可以返回给使用者的数据 可有可无

2.函数的定义与调用

'''函数必须先定义再调用 顺序不得乱'''
函数的定义	使用关键字def  # 定义阶段只检测语法不执行代码
函数的调用	函数名加括号  # 调用阶段才会执行函数体代码

3.函数的分类

# 1.空函数 函数体代码为空 用pass或···补全 在项目前期用来搭建框架
def register():
    """注册功能"""
    pass
# 2.无参函数 定义函数的时候括号内没有参数
def index():
    print('from index function')
# 3.有参函数 定义函数的时候有参数 调用函数的时候需要括号传参数
def func(a):
    print(a)

4.函数的返回值

# 什么是返回值
调用函数之后返回给调用者的结果

# 如何获取返回值
变量名 赋值符号 函数的调用

res = func()  # 先执行func函数 然后将返回值赋值给变量res

# 函数返回值的多种情况
函数体代码中没有return关键字 默认返回None
函数体代码有return 如果后面没有写任何东西还是返回None
函数体代码有return 后面写什么就返回什么
函数体代码有return并且后面有多个数据值 则自动组织成元组返回
函数体代码遇到return会立刻结

5.函数的参数

# 形参与实参的关系

形参类似于变量名 在函数定义阶段可以随便写 最好见名知意
实参类似于数据值 在函数调用阶段与形参临时绑定 函数运行结束就立刻断开

def register(username, password):  # username和password为形参
    register(almira, 123)  # almira和123为实参
    
username与almira绑定	password与123绑定
形式参数	在函数定义阶段括号内填写的参数 简称'形参'
实际参数	在函数调用阶段括号内填写的参数 简称'实参'
位置形参	函数定义阶段括号内从左往右依次填写的变量名 eg:def func(a, b, c):pass
位置实参	函数调用阶段括号内从左往右依次填写的变量名 eg:func(1, 2, 3)
默认参数	本质就是关键字参数 提前给定 用户可传可不传
可变长形参   *args  **kwargs 用来接受多余的关键字参数 组织成字典赋值给**后面的变量名
可变长实参   在这里*类似于for循环 **可以将字典打散成关键字参数的形式传递给函数
# 关于这些参数需要注意以下几个点
越短的越简单的越靠前
越长的越复杂的越靠后
默认参数也要遵循上面
同一个形参在调用时不能多次赋值
按照位置一一对应传值
少一个多一个都不行

6.名称空间

# 名称空间的定义
名称空间就是用来存储变量名与数据值绑定关系的地方(我们也可以简单的理解为就是存储变量名的地方)

'''内置名称空间'''
解释器运行自动产生 里面包含了很多名 eg:print input len
    
'''全局名称空间'''
py文件运行产生 里面存放文件级别的名字 eg: name = 'almira'里面的name就是
    
'''局部名称空间'''
函数体代码运行时产生
# 名称空间的存活周期以及作用范围
内置名称空间  Python解释器启动自动创建 关闭则自动销毁 解释器级别全局有效
全局名称空间  py文件执行则自动创建 运行结束则自动销毁 py文件级别全局有效
局部名称空间  函数体代码运行就创建 运行结束则自动销毁 函数体代码全局有效

7.名字的查找顺序以及实际案例

涉及到名字的查找 首先要搞明白自己在哪个空间 其实名字的查找顺序是可以打破
# 在局部名称空间中的时候
局部名称空间>>>全局名称空间>>>内置名称空间
# 在全局名称空间中的时候
全局名称空间>>>内置名称空间
1.相互独立的局部名称空间默认不能够互相访问
	 def func1():
    	name = 'jason'
    	print(age)

    def func2():
       age = 18
       print(name)
2.局部名称空间嵌套
	先从自己的局部名称空间查找 之后由内而外依次查找
"""
函数体代码中名字的查找顺序在函数定义阶段就已经固定死了
	x = '干饭了'
    def func1():
        x = 1
        def func2():
            x = 2
            def func3():
                print(x)
                x = 3
            func3()
        func2()

    func1()
"""

8.global与nonglobal

# global 局部名称空间直接修改全局名称空间中的数据
money = 666

def index():
    global money
    money = 123

index()
print(money)
# nonglobal 内层局部名称空间修改外局部名称空间中的数据 
def index():
    name = 'jason'
    def inner():
        nonlocal name
        name = 'kevin'
    inner()
    print(name)

index()

9.函数名的多种用法

函数名其实绑定的也是一块内存地址
只不过该地址里面存放的不是数据值而是一段代码
函数名加括号就会找到该代码并执行
以下有四种函数名的用法

·可以当做变量名赋值
·可以当做函数的参数
·可以当做函数的返回值
·可以当做容器类型数据

10.闭包函数

什么是闭包函数?
·定义在函数内部的函数
·用到外部函数的名称空间中的名字

闭包函数实际应用?
·是另外一种给函数体代码传参的方式

# 形如
def outer():
    print('from outer')
    def inner():
        print('from inner')
        

二、关于装饰器

1.装饰器简介

# 概念
在不改变被装饰对象原代码和调用方式的情况下给被装饰对象添加新的功能
# 本质
并不是一门新的技术 而是由函数参数、名称空间、函数名多种用法、闭包函数组合到一起的结果
# 口诀
对修改封闭 对扩展开放

2.装饰器的模板(重点 务必掌握)

def outer(func):
    def inner(*args, **kwargs):
        # 执行被装饰对象之前可以做的额外操作
        res = func(*args, **kwargs)
        # 执行被装饰对象之后可以做的额外操作
        return res
    return inner

3.关于语法糖

# 单层语法糖
语法糖会自动将下面紧挨着的函数名当做第一个参数自动传给@函数调用
# 多层语法糖
加载顺序由下往上
每次执行之后如果上面还有语法糖 则直接将返回值函数名传给上面的语法糖
如果上面没有语法糖了 则变形 index = outter1(wrapper2)

4.递归函数

  1. 直接或者间接调用自己
  2. 每次调用都必须比上一次简单且需要有一个明确的约束条件
  3. 递归:一层层往下
  4. 回溯:基于明确的结果一层层网上

最大递归深度:其实就是python解释器添加的安全措施
官网提供的最大递归深度为1000 实际测试的时候可能会出现996 997 998

def get_age(n):
    if n == 1:
        return 18
    return get_age(n-1) + 2
res = get_age(5)
print(res)

5.匿名函数

函数定义
没有名字的函数 需要使用关键字lambda
匿名函数一般不单独使用 需要配合其他函数一起用

语法结构	lambda 形参:返回值
	
使用场景	lambda a,b:a+b

6.常见内置函数

map()  # 映射
max()  # 最大值
min()  # 最小值
reduce()  # 传多个 返回一个值
abs()  # 绝对值
all()  # 所有数据值对应的布尔值为True结果才是True 否则返回False
any()  # 所有数据值对应的布尔值有一个为True结果才是True 否则返回False
bytes()  # 转换成bytes类型
callable()  # 判断名字是否可以加括号调用
chr(97)  # 基于ASCII码表做转换 数字转换字符
ord('a')  # 基于ASCII码表做转换 字符转换数字
dir()  # 返回括号内对象能够调用的名字 
divmod()  # 元组 第一个数据为整除数 第二个是余数
round()  # 四舍五入
enumerate()  # 枚举
eval()  # 能够识别字符串中的python并执行
exec()  # python内置函数exec支持动态执行python代码
hash()  # 哈希加密
pow()  # 幂指数(次方)
sum()  # 求和
range()  # 能返回一系列连续添加的整数,能够生成一个列表对象
open()  # 打开
id()  # 用于获取对象的内存地址
input()  # 获取用输入
isinstance()  # 用来判断一个函数是否是一个已知的类型
bin()  # 返回一个整数的二进制表示形式的字符串
oct()  # oct() 函数将一个整数转换成 8 进制字符串
hex()  # 将10进制整数转换成16进制,以字符串形式表示
int()  # 将数字或者字符串转换成int类型数据

7.重要内置函数

zip()  # 打包成元组,返回列表,如果长度不一致,则与短的iterable对齐
filter()  # 用于过滤序列,将满足条件的元素取出来构成新的序列
sorted()  # 排序 默认是升序
本文转载于网络 如有侵权请联系删除

相关文章

  • C#数字转换成大写人民币金额

    C#数字转换成大写人民币金额 如200转换成贰佰元//数字转换成大写金额 //例如:(newMoney(200)).ToString()=="贰佰元" namespaceSkyiv.Util { usingSystem.Text; classTest { staticvoidMain() { for(;;) { System.Console.Write("金额:"); strings=System.Console.ReadLine(); decimalm; try{m=decimal.Parse(s);} catch{break;} System.Console.WriteLine("大写:"+newMoney(m)); } } } //该类重载的ToString()方法返回的是大写金额字符串 classMoney { publicstringYuan="元";//“元”,可以改为“圆”、“卢布”之类 publicstringJiao="角";//“角”,可以改为“拾” publicst

  • 可灵活配置,人性化管理,简单易用的开源工单系统

    开始此项目的初衷一直想维护一个开源的项目,但是有的半途而废了,有的止步与设计,这次终于坚持下来了,毕竟有的时候工作之余还是工作啊。在之前的开源项目开发过程中,总会因为各种事情耽误,导致没有兴趣继续开发下去。这次在我的完美规划下中,终于在工作之余写出了第一版的开源工单项目。因为还不是很完善,因此目前仅仅提供了一个demo地址,后续完善会开放源代码供大家参考学习。Demo:开源工单项目废话不多说,下面就开始介绍一下这个项目吧。已完成功能及待完成功能介绍已完成的功能功能状态介绍灵活定义流程已完成人性化灵活定制流程,鼠标拖拽即可灵活设计表单已完成人性化灵活实现表单设计,鼠标拖拽,支持大部分场景会签已完成当有多个处理人的时候,需全部完成才可进入下一阶段排他网关已完成通过条件判断进行节点跳转,例如:成本小于1000部门领导审批,大于1000总经理审批并行网关已完成多个节点同时处理,并且必须都处理完成才可以进入下一节点,没有条件判断限制流程及节点都可绑定脚本任务已完成为使任务的兼容比较好,因此使用脚本的方式来进行管理及维护转交已完成当出现当前处理人有事情,无法处理的时候,可以将单子转交给别人结单已完

  • 还抱着 Java 8 不放,也是醉了!

    作者|TrishaGee 原文:https://dzone.com/articles/beyond-java-8译者|弯月 责编|屠敏出品|CSDN(ID:CSDNnews)不说Android,Java本身都很碎片化。尽管Java升级换代,但于开发者来说,还是紧紧地抱着Java8不放,这是为什么呢?一起来看下吧。 以下为译文:近日的调查结果显示,绝大多数开发人员的主要应用程序中使用的还是Java8。数据来源:https://snyk.io/blog/jvm-ecosystem-report-2018/在Java8之前,用户接受更高版本的Java的过程非常缓慢,特别是在企业中,因为在生产环境中接受新版本Java非常困难。而引入了Lambda表达式和流的Java8对许多开发人员来说都非常有吸引力。同时,微服务、持续发布实践和更好的自动化测试也让接受新版本语言变得更容易,风险比以前更小。那么,鉴于这些因素,为什么从Java9开始每年两次发布新版本的情况下,开发人员还在坚持使用Java8呢?目前Java最新的版本是Java12,然而很少有人使用9~12的版本。推荐:Java12正式发布,8大新

  • 电商项目(中)

    电商项目电商项目(中) 旋转的图片:<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>dashu</title> <style> div{ width:250px; height:170px; border:1pxsolidpink; margin:200pxauto; position:relative; } divimg{ width:100%; height:100%; position:absolute; top:0; left:0; transition:all0.6s; transform-origin:topright; } div:hoverimg:nth-child(1){ transform:rotate(60deg); } div:hoverimg:nth-child(2){ transform:rotate(120deg); } div:hoverimg:n

  • Vsftp服务的搭建和配置(1/2)

    简述vsftpd,又叫VerySecureFTPdaemon,是一种Linux下安全的文件传输软件。安装和配置也很简单,平时传传文件也是非常有用的。安装和启动root@iZ28ntr2ej5Z:~#apt-getinstallvsftpd复制即可安装完成。root@iZ28ntr2ej5Z:/#servicevsftpdstart复制即可启动服务。root@iZ28ntr2ej5Z:/#servicevsftpdstop复制即可停止服务。root@iZ28ntr2ej5Z:/#servicevsftpdrestart复制即可重启服务。 有时候stop命令会出现错误,虽然不知道是怎么回事,但是重新安装一下就可以了。当然这里有个坑。。用户管理Vsftpd的用户有三种形式:匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问本地用户形式:以/etc/passwd中的用户名为认证方式虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于

  • salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧

    本篇参考:https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-alert-confirm-prompthttps://help.salesforce.com/s/articleView?id=release-notes.rn_lc_alert_confirm_prompt.htm&type=5&release=238https://developer.salesforce.com/docs/component-library/bundle/lightning-alert/documentationhttps://developer.salesforce.com/docs/component-library/bundle/lightning-confirm/documentation我们在项目中可能会用到alert或者confirm方法来实现一些交互性效果。 比如不满足指定的条件,我们需要alert提供一些文字来告诉用户当前数据问题,引导用户

  • WEB测试方法(三)

    WEB测试方法(三)   三、添加、修改功能 1、特殊键:(1)是否支持Tab键(2)是否支持回车键 2、提示信息:(1)不符合要求的地方是否有错误提示 3、唯一性:(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性) 4、数据正确性: (1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新。 (2)进行必填项检查(即是否给出提示以及提示后是否依然把数据存到数据库中;是否提示后出现页码错乱等) (3)是否能够连续添加(针对特殊情况) (4)在编辑的时候,注意编辑项的长度限制,有时在添加的时候有,在编辑的时候却没有(注意要添加和修改规则是否一致) (5)对于有图片上传功能的编辑框,若不上传图片,查看编辑页面时是否显示有默认的图片,若上传图片,查看是否显示为上传图片 (6)修改后增加数据后,特别要注意查询页面的数据是否及时更新,特别是在首页时要注意数据的更新。 (7)提交数据时,连续多次点击,查看系统会不会连续增加几

  • nginx+lua+redis实现广告缓存

    需求分析# 需要在页面上显示广告的信息。 OpenResty# OpenResty介绍# OpenResty(又称:ngx_openresty)是一个基于NGINX的可伸缩的Web平台,由中国人章亦春发起,提供了很多高质量的第三方模块。 OpenResty是一个强大的Web应用服务器,Web开发人员可以使用Lua脚本语言调动Nginx支持的各种C以及Lua模块,更主要的是在性能方面,OpenResty可以快速构造出足以胜任10K乃至1000K以上并发连接响应的超高性能Web应用系统。 360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是OpenResty的深度用户。 OpenResty简单理解,就相当于封装了nginx,并且集成了LUA脚本,开发人员只需要简单的其提供了模块就可以实现相关的逻辑,而不再像之前,还需要在nginx中自己编写lua的脚本,再进行调用了。 OpenResty安装# linux安装openresty: 1.添加仓库执行命令 yuminstallyum-utils ​ yum-config-manager--add-repohttps://ope

  • Docker发布开发团队2021年三个首选方向;工信部印发《工业互联网创新发展行动计划(2021-2023 年)》

    开发者社区技术周刊又和大家见面了,快来看看这周有哪些值得我们开发者关注的重要新闻吧。 智源研究院发布超大规模新型预训练模型“文汇”参数量级达113亿 AI公司Rokid发布双目MR眼镜RokidVision2:兼容4G和5G网络 TypeScript4.2Beta发布 Go泛型提案已提交,Go1.18beta有望试用 Docker发布开发团队2021年三个首选方向 工信部印发《工业互联网创新发展行动计划(2021-2023年)》 ICLR2021丨美团、上交大等:鲁棒的可微分神经网络搜索DARTS- "妙笔"生花:一个易用、高效的文本生成开源库 行业要闻 Industry  News 1,智源研究院发布超大规模新型预训练模型“文汇”参数量级达113亿 中新网北京新闻1月12日电 超大规模新型预训练模型“文汇”日前发布,旨在探索解决当前大规模自监督预训练模型不具有认知能力的问题。“文汇”模型运用数据驱动的方法建构预训练模型,将用户行为、常识知识以及认知联系起来,让AI主动“学习”与创造。数据显示,“文汇”模型参数规

  • Monte Calro Tree Search (MCTS)

    https://blog.csdn.net/natsu1211/article/details/50986810,感谢分享! Intro最近阿法狗和李师师的人机大战着实火了一把,还顺带捧红了柯杰,古力等一干九段。虽然我从小学的是象棋,对围棋也只是略知一二,但是棋魂还是对我影响颇深的启蒙漫画,于是还是凑热闹看了几盘大战。其中蒙特卡洛树搜索(MonteCalroTreeSearch,MCTS)就多次被各路砖家提及。想必各位选过AI课的同学都知道Minimaxtree和Alpha-beta剪枝等各种技巧。归根到底,这些传统AI技术还是暴力搜索,将游戏中所有的可能性表示成一棵树,树的第N层就代表着游戏中的第N步。树的node数是随着树的深度成指数增长的,不考虑剪枝,每个node都是需要进行估值的。Minimaxtree在诸如象棋,黑白棋等传统游戏中取得了巨大的成功,主要原因还是有两个,1.游戏本身的探索空间相对较小(比如象棋大概是10^50),配合剪枝,开局和杀棋棋谱,非平衡树探索等优化技术,加上并行计算和IterativeDeepening,使得探索到树的深层甚至底层成为可能。2.搜素的最终

  • 1 分钟做一个爬山虎,简单 ,方便,blender 293自带插件 ivygen 插件

    https://www.bilibili.com/video/BV1uf4y1j7sX   ivygen插件blender自带插件 制作爬山虎成功难点在于贴图的制作,找一张树叶的图片,然后photoshop中把周围非树叶的部分删除弄成透明,然后ctr+t可以旋转,缩放这个树叶,然后在图层上右键,复制,建立新图层,弄很多个树叶,对于每个图层,依然使用ctr+t旋转树叶,注意树叶的根要被其他树叶压住,只有最上面的一个树叶有根能被看见。然后保存图像为png。然后进入blender在shading中,将png树叶图像color连接到principledbsdf的basecolor上,将图像的alpha连接到principledbsdf的alpha上,就Ok了。完美。哈哈哈美中不足的是树叶的方向都是平行的,这不管我的事,这是ivygen插件的问题。啊哈哈 ivygen参数学习偏好设置,勾选这个插件,然后在n面板,create中能看到这个插件。点开ivygenerator选中一个物体,然后将3d游标定位到这个物体的某个顶点上,然后进入物体模式,然后点击addnewlvy.然后就会生成常

  • 使用CKRule实现PVC配方计算

    1,PVC计算的基本原理 配方员设计好配方,再进行抽象提炼,会出现相对于软件而言可以理解的逻辑,如属性的概念,对厂企生成的PVC产品而言,一般都有产品大类名称,花纹,颜色,长度,宽度,厚度等概念,这对于软件而言,就是一个对象,该对象是描述订单的对象。而配方计算出来的结果,如原料名称,质量比分量,重量等信息就是物料清单对象。 配方计算的过程就是这样的一个过程。   结构化标准配方,就是教科书上面的知识,如 PVC 100 DINP 40 Caco3 10 HSt 1 Sb2O3 4 这此是基础数据,生产某产品,并且油份在一定的区间就要调用这个配方。 而半结构化表格配方规则,一般是厂企特有的内容,设置时可以自定义一个属性进行归纳总结,如使用特征码来表达增加某些原料,如增加透明度时,执行这个表格: 特征码 增透明剂编码 份量 B1 TM-001 1 B2 TM-002 0.5 B3 TM-003 1.5 表示,如果当前的配方对象的特征为B2时,

  • 如何在 chrome控制台快速获取某段 html?

    有时候我们想通过控制台打印的方式,快速打印出想看的某段html,可以在html中选中药打印的标签,在控制台输入$0,即可打印。      

  • 节点 删除父节点时删除子节点的存储过程

    alterprocedureDelereNote @idint--定义要删除树节点 asdeclare@childIDint--声明变量 declarecursorscursorlocalforselectidfromtestwherepid=@id--local关键字全局游标 opencursors fetchnextfromcursorsinto@childID--取游标的值赋给变量 while(@@FETCH_STATUS=0)--判断当前游标内是否存在值 begin   execDelereNote@childID--递归调用存储过程把孩子节点的值赋给游标递归调用   fetchnextfromcursorsinto@childID--继续读取游标里面的内容 end  closecursors deallocatecursorsdeletefromtestwhereID=@id--存储过程执行的删除方法&nbs

  • 2022.3.16学习日志

    今天复习了线代。

  • WebStorm 11激活方法

    由于最新jetbrains发布了IntelliJIDEA15.PyCharm5.PhpStorm10.WebStorm11等各个版本,但是改变了注册方法。原先的注册码包括注册机都已经不能使用了。 现在有个比较简单的注册方法.注册时选择“Licenseserver”输入“http://15.idea.lanyus.com/”点击“OK”即可快速激活JetBrains系列产品 欢迎和大家多多沟通学习,如有任何改进意见和建议,欢迎联系哦。

  • window对象

    计时器 setTimeout() //用来实现一个函数在指定的毫秒之后运行 claerTimeout() //用于取消这个函数的执行 setInterval()  //和setTimeout()一样,只不过这个函数会在指定毫秒数的间隔里重复调用 clearInterval() //用于取消后续函数的调用 setInterval(updateClock,6000);//每60秒调用一次updateClock()复制 functioninvoke(f,start,interval,end){ if(!start)start=0;//默认设置为0毫秒 if(arguments.length<=2){//单次调用模式 setTimeout(f,start);//若干毫秒后的单次调用模式 }else{//多次调用模式 setTimeout(repeat,start);//在若干毫秒后调用模式 functionrepeat(){//在上一行所示的setTimeout()中调用 varh=setInterval(f,interval);/

  • 两篇 Spring 总结(一)

    Spring4概述以及HelloWorld 概述 Spring是一个IOC(DI)和AOP容器框架. 轻量级,Spring是非侵入的,即使用的时候不需要实现任何接口或继承任何父类 面向切面编程(AOP)、依赖注入(DI) 容器,Spring是一个容器,因为他包含并管理应用对象的生命周期 框架,Spring实现了使用简单的组件配置组合成了一个复杂的应用,Spring中使用XML文件和注解组合这些对象 一站式,在IOC和AOP的基础上可以整合各种企业应用的开源和优秀的第三方类库 SpringHelloWorld 搭建Spring开发环境 新建一个Spring项目,加入Springjar包,以及其依赖包(commons-logging) 开发HelloWorld 新建一个HelloWorld类 publicclassHelloWorld{ privateStringname; publicvoidsetName(Stringname){ System.out.println("setName:"+name); this.name=name; } public

  • 第三次作业

    一观看视频笔记内容              二敲的代码   三pta和视频问题 1为什么指针用dst和src不能重叠,多核怎么实现分配?  2字符串最后是\0和\n,视频中好像读者\n,写着\0;为什么字符串后面有这,不可以没有? 3pta函数题第一个自己没搞懂,还有悬着不确定   

  • MyBatis中二级缓存和延时加载同时开启的问题

    首先,二级缓存默认不开启! 要配置 <settingname="cacheEnabled"value="true"/>   在MyBatis中:一级缓存会维护一个HashMap,key为hashcode+statementId+sql语句,Value为查询出来的结果集映射成的java对象。作用域是SqlSession 二级缓存是namespace级的,还需要在配置文件处配置缓存<cache/>   在配置了分布查询 1<selectid="selectEmployees"resultMap="emps"> 2selectid,last_name,gender,descr,didfromemployee 3</select> 4 5<resultMaptype="com.atguigu.bean.Employee"id="emps"> 6<idcolumn="id"property="id"/> 7<resultcolumn="last_name"property="lastNa

  • Linux Error

    01     E:Unmetdependencies.Try'apt-get-finstall'withnopackages(orspecifyasolution). 1sudoaptitude-finstall复制   02    fatalerror:stdio.h:Nosuchfileordirectory   sudoapt-getinstalllibc6-devsudoapt-getinstalllinux-headers-generic复制   03    Python.h:Nosuchfileordirectory 1sudoapt-getinstallpython-dev#forpython2.xinstalls 2sudoapt-getinstallpython3-dev#forpython3.xinstalls复制   04    Nomodulenamedflask.ext.

相关推荐

推荐阅读