日期: 2021 年 4 月 6 日

合并排序数组

合并排序数组

目录
1、问题描述
2、问题实例
3、代码实现
3、代码思考与拓展
1、问题描述
合并两个升序的整数数组A和B,形成一个新的数组,新数组也要有序。

2、问题实例
输入A=[1],B=[1], 输出[1,1],返回合并后的数组,输入A=[1,2,3,4], B=[2,3,4,5], 输出[1,2,2,3,4,4,5,6], 返回合并所有元素后的数组。

3、代码实现
书中代码:

class Solution():
# 参数A:有序整数数组A
# 参数B:有序整数数组B
# 返回:一个新的有序整数数组
def Sort1(self, A, B):
i, j = 0, 0
c = []
while i < len(A) and j < len(B):
if A[i] < B[j]:
c.append(A[i])
i += 1
else:
c.append(B[j])
j += 1
while i < len(A):
c.append(A[i])
i += 1
while j < len(B):
c.append(B[j])
j += 1
return c

if __name__ == ‘__main__’ :
A = [1, 4]
B = [1, 2, 4]
D = [1, 2, 3, 4]
E = [2, 4, 6, 8]
solution = Solution()
print(‘输入:’, A, B)
print(‘输出:’, solution.Sort1(A, B))
print(‘输入:’, D, E)
print(‘输出:’, solution.Sort1(D, E))

输出结果为:%title插图%num

书中代码解读:
题中A和B数组均为升序数组,书中采用多个while实现,*个while的意思是,如果A列表中的*个数比B列表中的*个数小,那么,将这个数添加到c列表中,接下来,用A列表的第二个数与B中的*个数做比较,如果B列表的*个数比A列表中的第二数小,那么将该数添加到c列表中,依次类推。第二个while和第三个while是用来处理A列表和B列表中相同数的。

3、代码思考与拓展
1、代码思考
书中代码的前提条件是A和B列表是升序列表,若A和B列表不是升序列表,则上述类不适用,可对列表A和B进行sort()处理,将A和B变为升序列表。举例如下:

A = [1, 6, 3, 4, 1, 9, 2]
B = A.copy()
B.sort()
print(A)
print(B)

输出为:%title插图%num

注意在排序之前,对A列表进行copy,防止后续处理对A列表带来的影响。
2、代码拓展
基于此,我提出一个新要求,给定一个并没按照升序排列的数字列表,记下此时的索引,要求该列表按照一定要求升序或者降序之后,还能和其之前未升序或降序前的索引对应。

比如:给定列表A=[2, 5, 4, 9, 1], 则数字2对应索引为0,数字5对应索引为1,对A进行升序排列得到列表B=[1, 2, 4, 5, 9], 此时我们仍能知道数字1对应的先前索引。
解决方法:利用pandas。

import pandas as pd

# 对于单个列表
A = [2, 5, 4, 9, 1]
C = {‘A’: A}
df = pd.DataFrame(C)
result = df.sort_values(by=’A’, axis=0, ascending=True)
print(result)

# 对于列表嵌套列表
a = [[8, 2, 5, 4], [10, 6, 9, 8]]
data = pd.DataFrame(a)
# print(data)
# print(data.T)
data1 = data.T
data1 = data1.sort_values(by=0, axis=0, ascending=True)
print(data1)

输出结果为:

%title插图%num

python创建Django项目

python创建Django项目

首先需要下载Django   下载方式见文章:    https://blog.csdn.net/knight31318/article/details/115422610

然后系统就会带有django-admin工具

用命令行方式进入希望存放Django项目的路径,比如D盘,执行以下命令:

django-admin startapp 项目名称 ,   比如    django-admin startapp djangoproject  即可。

%title插图%num

可以看到D盘下有了djangoproject文件夹。

 

注意:我们执行以上命令时,是在(django-venv)这个虚拟环境中执行的,所以在我们用开发工具打开项目之后,还需要同步修改开发工具的解释器,指向django-venv虚拟环境。

否则如果开发工具使用了默认python环境,会有问题,就像根本没有安装过django框架一样。

虚拟环境的创建方法见:   https://blog.csdn.net/knight31318/article/details/115449400

本地windows连接阿里云服务器

在购买阿里云服务器之后,可以进入管理服务器进行设置,要想通过windows登录到Ubuntu16.04阿里云服务器上需要进行一下步骤:

1. 从管理控制台进入本实例安全组。

%title插图%num

2. 点击配置规则。

%title插图%num

3. 点击添加安全组规则。

 

%title插图%num

4. 在弹出的框中分别按以下画红色线的部分的方式设置。

%title插图%num

至此可以通过申请的云服务器的公有ip进行访问了。

5. 下载XShell。在安装完之后的窗口中依次点击文件-新建回话-输入云服务器主机地址。

%title插图%num

6. 点击确定,在接下来弹出的对话框中输入用户名和密码,该用户名和密码是之前申请云服务器时填写的。

7. 连接成功后会弹出黑色的框框啦,貌似云服务上的Ubuntu是没有图形界面的。

云服务器和物理机的区别是什么

往昔,小农经济在主导位置,而如今互联网、云计算更胜一筹。从计算机到互联网,再到云计算,乃是翻天覆地的变化。此种变化对某些人是突如其来的,对于某些人是预料之中的。其实,它乃是时代的产物,必然的结果。将来的云计算以及共享经济都是不可估量的未来。

随着云计算的成熟以及其技术的发展,越来越多的云服务厂商加入到行业中来,为用户提供了更多的有关云计算产品的选择,其中就包括为中小企业带来*大便利的云服务器。那么相对于传统的物理机,云服务器有哪些优势呢?云服务器与物理机又有何区别呢?

1.技术方面
云服务器对于云计算的计算精度、储存容量,结构灵活性都有一定的要求,会有庞大的数据输入或海量的工作集,因此云服务器更适合于中小型企业来开展业务。而独立服务器具有高超的硬件设置配置,能满足大型的网络服务节点,因此这类服务器在技术上面相对云服务器较为成熟一些。
2.规格成面
云服务器在规格方面和独立服务器都有较大的差异,因此在服务器租用的价格方面会有很大的差异。一般来说,云服务器的CPU、内存等配置都会相对的较低,不会有很高的规格,而独立服务器就不会有这样低的配置。
3.安全方面
云服务器的安全要求非常高,因此云服务器具备方ARP攻击和MAC欺骗功能,可以进行快照备份,确保数据的相对安全。独立服务器的安全性相比云服务器就要相对弱一点。数据备份要是丢失,就会造成很大的麻烦。
通过以上的介绍,大家对于云服务器和独立服务器的区别都有了一定的认知,对于云服务器的计算密度、虚拟化能力、并行计算都有很高的要求。大家在以后选择服务器的时候就会有相应的了解。

4.可靠性方面:云服务器是基于服务器集群的,因此硬件冗余度较高,故障率低;而物理机则相对来说硬件冗余较少,故障率较高;

5…灵活性方面:云服务器用户可以在线实时增加自己的配置,可扩展空间较大,云服务器就提供丰富的实例规格(CPU、内存)和带宽、云盘供用户选择,支持随时升级,满足各种业务需求;而物理机则有这方面的局限性。

​6.性能方面:云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠;

7.稳定性方面:云服务器可以故障自动迁移,意思是如果一台云服务器出现故障,其上面的应用就自动迁移到其他云服务器上了。物理机宕机就是宕机,无法挽救。
————————————————
版权声明:本文为CSDN博主「qq2403331804」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45899635/article/details/103570370

处理微信服务器发来的消息

package com.router.api.wechat.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;

import com.router.api.wechat.service.CoreService;
import com.router.api.wechat.util.Tool;
import com.router.service.AccessTokenService;

@WebServlet(name=”Auth”,urlPatterns=”/Auth”)
public class CoreController extends HttpServlet{
@Autowired
private AccessTokenService accessTokenService;
/**
* 本类 是为了验证token
*
*/
private static final long serialVersionUID = 4440739483644821986L;

/**
* 请求校验(确认请求来自微信服务器)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter(“signature”);
// 时间戳
String timestamp = request.getParameter(“timestamp”);
// 随机数
String nonce = request.getParameter(“nonce”);
// 随机字符串
String echostr = request.getParameter(“echostr”);

PrintWriter out = response.getWriter();
// 请求校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (Tool.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
System.out.println(“123131d31a23d1a31sd32a1d3a1d31ad54a6d4”);
}

/**
* 处理微信服务器发来的消息
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 消息的接收、处理、响应
// 将请求、响应的编码均设置为UTF-8(防止中文乱码)
request.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);
// 调用核心业务类接收消息、处理消息
PrintWriter out = response.getWriter();
String respXml = CoreService.processRequest(request);

// 设置了utf-8 不管用的时候 可以试试
out.println(“<?xml version=\”1.0\” encoding=\”utf-8\”?>”);
out.println(respXml);
out.close();
out=null;

}
}

KNN+约会网站匹配分类

KNN+约会网站匹配分类

KNN+约会网站匹配分类
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler #进行归一化处理
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv(‘datingTestSet.txt’,header=None,sep=’\s+’)
feature = df[[0,1,2]]
target = df[3]
x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.2,random_state=2021)
#print(x_train)#观察特征数据查看是否需要进行特征工程
mm = MinMaxScaler()
m_x_train = mm.fit_transform(x_train)#对训练集的特征数据进行归一化操作
m_x_test = mm.transform(x_test)#对测试集进行归一化操作

#绘制学习曲线找寻*优的k值
scores = []
ks = []
for k in range(3,5):
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(m_x_train,y_train)
score = knn.score(m_x_test,y_test)
scores.append(score)
ks.append(k)
scores_arr = np.array(scores)
ks_arr = np.array(ks)
plt.plot(ks_arr,scores_arr)
#基于学习曲线找到的*优解的K值来实例化模型对象
knn = KNeighborsClassifier(n_neighbors=3).fit(m_x_train,y_train)
print(knn.score(m_x_test,y_test))

#实现分类
print(knn.predict([[2345,23,1.1]]))

OpenCV移动物体检测

OpenCV移动物体检测

#encoding=utf-8
import cv2
import time
import winsound

camera = cv2.VideoCapture(0) # 定义摄像头对象,其参数0表示*个摄像头(自带摄像头)
if camera is None:
#如果摄像头打开失败,则输出提示信息
print(‘please connect the camera’)
exit()

fps = 30 #帧率
pre_frame = None #总是取前一帧做为背景(不用考虑环境影响)

while True:
start = time.time()
# 读取视频流
res, cur_frame = camera.read()
if res != True:
break
end = time.time()

seconds = end – start
if seconds < 1.0/fps:
time.sleep(1.0/fps – seconds)

cv2.namedWindow(‘img’,0);
#cv2.imshow(‘img’, cur_frame)

#检测如何按下Q键,则退出程序
key = cv2.waitKey(30) & 0xff
if key == 27:
break
#转灰度图
gray_img = cv2.cvtColor(cur_frame, cv2.COLOR_BGR2GRAY)
#将图片缩放
gray_img = cv2.resize(gray_img, (500, 500))
# 用高斯滤波进行模糊处理
gray_img = cv2.GaussianBlur(gray_img, (21, 21), 0)

#如果没有背景图像就将当前帧当作背景图片
if pre_frame is None:
pre_frame = gray_img
else:
# absdiff把两幅图的差的*对值输出到另一幅图上面来
img_delta = cv2.absdiff(pre_frame, gray_img)

#threshold阈值函数(原图像应该是灰度图,对像素值进行分类的阈值,当像素值高于(有时是小于)
#阈值时应该被赋予的新的像素值,阈值方法)
thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]

#膨胀图像
thresh = cv2.dilate(thresh, None, iterations=2)

# findContours检测物体轮廓(寻找轮廓的图像,轮廓的检索模式,轮廓的近似办法)
contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

for c in contours:
#灵敏度
if cv2.contourArea(c) < 1000: # 1000为阈值
continue
else:
#框选移动部分
(x,y,w,h) = cv2.boundingRect(c)
cv2.rectangle(cur_frame,(x,y),(x+w,y+h),(0,255,0),2)

print(“something is moving!!!”)
flag = True
if flag == True:
winsound.Beep(600, 1000)
break

#显示
cv2.imshow(‘img’, cur_frame)
pre_frame = gray_img

# release()释放摄像头
camera.release()
#destroyAllWindows()关闭所有图像窗口
cv2.destroyAllWindows()

局域网内搭建一个服务器,可以使用 https 吗

局域网内通过嵌入式设备搭建一个轻量级 web 服务,可以仍然使用 https 吗,有点困惑,证书什么的怎么办

paparika 2018-07-19 16:15:23 +08:00
这里的局域网就特指普通家庭局域网
flowfire 2
flowfire 2018-07-19 16:16:56 +08:00 via iPhone
自己签发一个,然后手动信任
littleylv 3
littleylv 2018-07-19 16:17:18 +08:00
1、这种情况有必要用 https 么?
2、用自己生成的证书,但是首次浏览器会警告,给他允许了就好了,左上角的小锁会是红色
i730 4
i730 2018-07-19 16:21:25 +08:00
局域网内 https 浪费性能啊,做好 wifi 防护就好,反倒别让人连上你 wifi 了
terrytw 5
terrytw 2018-07-19 16:24:40 +08:00
*种,自签名证书,导入你需要访问的客户端
第二种,你去 LETS ENCRYPT 去注册一个证书,前提你有域名,80 端口如果不能访问可以用 DNS 方式
paparika 6
paparika 2018-07-19 16:26:37 +08:00
@flowfire
@littleylv
@i730 情景有点复杂,局域网里另一个设备需要访问这个服务端(不是通过浏览器,是通过设备里的程序),如果是自签发的证书,必须要让这个设备事先授信这个证书是吧
paparika 7
paparika 2018-07-19 16:28:07 +08:00
@terrytw 如果是第二种的话,局域网内怎么挂域名
paparika 8
paparika 2018-07-19 16:29:05 +08:00
@terrytw 就是普通家庭那种局域网
paparika 9
paparika 2018-07-19 16:32:33 +08:00
@terrytw 是不是我要弄个广域网的域名,然后私下在局域网里 dns 把域名解析为局域网地址
i730 10
i730 2018-07-19 16:34:06 +08:00
@paparika #6 这个有公网域名*方便,否则自建 CA 在设备里导入,就是导入到系统,系统的证书链

paparika 11
paparika 2018-07-19 16:35:32 +08:00
@i730
@terrytw 如果是自签名,能导入证书。那么还是存在要解析域名的问题吧,这个怎么搞定
waacoo 12
waacoo 2018-07-19 16:36:31 +08:00 via iPhone
可以,mkcert
i730 13
i730 2018-07-19 16:38:07 +08:00
@paparika #11 hosts 文件了解一下
imdong 14
imdong 2018-07-19 16:38:54 +08:00
自签证书是可以的,也可以暴露 80 端口到外网(或拥有一台外网服务器)
然后获取到证书以后,拿到内网使用。
至于怎么获取证书,letsencrypt 阿里云 腾讯云 等很多第三方都可以签到证书的。
如何获取到证书是一个问题,证书在内网用没问题。
waacoo 15
waacoo 2018-07-19 16:39:11 +08:00 via iPhone
@waacoo 直接贴地址 https://github.com/FiloSottile/mkcert
paparika 16
paparika 2018-07-19 16:42:47 +08:00
@i730 对于我来说,服务端和设备是可控的,局域网是不可控的,那么我就不能用静态 ip,这样 hosts 也没用吧
paparika 17
paparika 2018-07-19 16:49:27 +08:00
@imdong 抱歉没懂,我是局域网内设备访问局域网服务器,暴露 80 干嘛
i730 18
i730 2018-07-19 16:52:57 +08:00
@paparika #16 你都不知道服务器 IP 怎么访问?搞个自动化程序,获取服务器 IP 写 hosts
whitegerry 19
whitegerry 2018-07-19 16:55:21 +08:00
@paparika

局域网绑个域名,然后 mkcert 自建根证书
https://github.com/FiloSottile/mkcert
paparika 20
paparika 2018-07-19 16:56:37 +08:00
@i730 哈哈,情景确实比较复杂,算是开个脑洞而已。这块比较小白,见谅
whitegerry 21
whitegerry 2018-07-19 16:57:08 +08:00
或者 Openssl 自签证书
paparika 22
paparika 2018-07-19 16:57:51 +08:00
@whitegerry 那局域网内怎么把域名转化为 ip 呢
imdong 23
imdong 2018-07-19 16:58:14 +08:00
问题分两种:
域名是真实的,楼主对域名拥有真实控制权:百度 letsencrypt DNS 验证
域名是伪造的,自签名 CA 生成证书,要求访问者导入 CA 证书到受信任的根证书机构。参考 12306
paparika 24
paparika 2018-07-19 17:01:23 +08:00
@imdong 感谢,再问一步,不管真实伪造,局域网内设备访问域名,有没有办法把域名指向局域网服务端的 ip (局域网是不受控的,干涉不了路由等设备)
whitegerry 25
whitegerry 2018-07-19 17:18:04 +08:00
服务端 ip 不可控?那跟能不能用 https 没什么关系吧
mikeguan 26
mikeguan 2018-07-19 17:20:56 +08:00 via Android
@paparika 可以在域名注册商那里将域名解析到内网的 和解析到公网 ip 地址一样的操作 并且可以设置 txt 记录进行域名签发证书
whitegerry 27
whitegerry 2018-07-19 17:28:17 +08:00
服务端和客户端可控且能连外网的话,虚拟局域网 n2n/tinc/zerotier,n2n 和 zero 自己不用准备公网服务器,或者 frp。
davidyin 28
davidyin 2018-07-19 18:23:57 +08:00
花点钱,买个域名指向局域网 ip,再买个证书,就可以了。
noe132 29
noe132 2018-07-19 18:54:53 +08:00
据我记忆好像是域名可以设置 A 记录到内网 ip,也就是可以指向 192.168.1.1 这种地址
liwufan 30
liwufan 2018-07-19 19:14:30 +08:00
我也很好奇这问题。虽然两台机子间倒腾 https 听起来有点鸡肋,但是大一点的内网是不是会开始自建 ca 服务器了啊?
n2ex2 31
n2ex2 2018-07-19 19:16:44 +08:00 via Android
域名可以设置内网 ip,另一种方法就是 hosts。
uncat 32
uncat 2018-07-19 21:14:01 +08:00 via Android
当然可以。准备一个域名解析到你的服务器内网 ip.然后按照 Letsencrypt 教程操作就可以了。
just1 33
just1 2018-07-19 22:08:24 +08:00
域名直接 A 记录内网 ip
flynaj 34
flynaj 2018-07-19 22:09:42 +08:00 via Android
letsencrypt DNS 验证 就可以证书了,或者静态 DNS 纪录也可以。
akira 35
akira 2018-07-19 22:43:51 +08:00
@paparika 内网搭建一个域名解析,或者配置 host 都可以。 内网用域名也是很常见的
imdong 36
imdong 2018-07-20 09:26:16 +08:00
如果域名是真实的,而且内网的服务器 IP 是固定且对所有人都可见。
是可以直接解析的。
DSN 解析支持内网,但是用户端要能连接外网。

你把 a.baidu.com 指向 127.0.0.1 所有访问这个地址的人都会打开本地.
如果内网地址是 192.168.1.253 那么吧 s.baidu.com 指向 这个 IP 即可.
iceheart 37
iceheart 2018-10-11 19:21:11 +08:00 via Android
1.域名和证书:几块钱买一个域名,freessl 上免费申请证书。
2.内网解析:搭个 dnsmasq,配置文件添加解析;内网的 dhcp 下发的 dns 指向你配的 dnsmasq

pygame详细安装教程

pygame详细安装教程

pygame安装是为了开发小游戏,在下新手在经过许多尝试后,为大家避雷,给大家分享一个简单,有效的方法!!!

1、首先Windows+R,输入cmd,打开DOS界面
2、在你按照网上教程输入 pip wheel /pip -help wheel 时如果你会遇到以下提示让你升级pip版本

You are using pip version 10.0.1, however version 21.0.1 is available.
You should consider upgrading via the ‘python -m pip install –upgrade pip’ command.
你可以按照提示输入 : python -m pip install –upgrade pip 后会提示 Successfully 你升级成功。
3、经过许多尝试,找到一种简便的方法,不需要从官网下载pygame‑2.0.1‑cp38‑cp38‑win_amd64.whl,可以直接使用 pip install pygame 直接下载。%title插图%num
两条命令完成安装 ,不需官网下载安装,可直接下载安装
1、python -m pip install –upgrade pip (此命令是升级pip包–pip 是一个 Python 包安装与管理工具)
2、pip install pygame (使用pip下载pygame)%title插图%num
3、pip list (查看pip列表,在此可以看出pygame已安装)

以上方法为大家提供参考,如有不严谨,或错误请大佬们指出,共同学习!!!

Python闭包的两个案例

Python闭包的两个案例

闭包的概念
闭包又称闭包函数或者闭合函数,其实和前面讲的嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数。一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行调用。

案例一:游戏中的角色移动:闭包在实际开发中的作用 原文
在某种情况下,我们并不方便使用全局变量,所以灵活的使用闭包可以实现替代全局变量。

例如以下的游戏开发中,我们需要将游戏中角色的移动位置保护起来,不希望被其他函数轻易可以修改到,所以我们选择使用闭包操作,参考代码及注释如下:

origin = (0, 0) # 原点
legal_x = [-100, 100] # x轴的移动范围
legal_y = [-100, 100] # y轴的移动范围

def create(pos_x=0, pos_y=0):
# 初始化位于原点为主
def moving(direction, step):
# direction参数设置方向,1为向右(向上),-1为向左(向下),0为不移动
# step参数设置移动的距离
nonlocal pos_x, pos_y
new_x = pos_x + direction[0] * step
new_y = pos_y + direction[1] * step
# 检查移动后是否超出x轴边界
if new_x < legal_x[0]:
pos_x = legal_x[0] – (new_x – legal_x[0])
elif new_x > legal_x[1]:
pos_x = legal_x[1] – (new_x – legal_x[1])
else:
pos_x = new_x
# 检查移动后是否超出y轴边界
if new_y < legal_y[0]:
pos_y = legal_y[0] – (new_y – legal_y[0])
elif new_y > legal_y[1]:
pos_y = legal_y[1] – (new_y – legal_y[1])
else:
pos_y = new_y
return pos_x, pos_y
return moving

move = create(0, 0)
print(‘向右移动10步后,位置是:’, move([1, 0], 10))
print(‘向上移动130步后,位置是:’, move([0, 1], 130))
print(‘向左移动10步后,位置是:’, move([-1, 0], 10))

运行结果为:

向右移动10步后,位置是: (10, 0)
向上移动130步后,位置是: (10, 70)
向左移动10步后,位置是: (0, 70)

实际效果是相当于封装了一个对象move,并定义其起始点坐标,需要移动时可以调用内嵌函数moving。

案例二:计算一个数的n次幂 原文
#闭包函数,其中 exponent 称为自由变量
def nth_power(exponent):
def exponent_of(base):
return base ** exponent
return exponent_of # 返回值是 exponent_of 函数
square = nth_power(2) # 计算一个数的平方
cube = nth_power(3) # 计算一个数的立方

print(square(2)) # 计算 2 的平方
print(cube(2)) # 计算 2 的立方

运行结果为:

在上面程序中,外部函数 nth_power() 的返回值是函数 exponent_of(),而不是一个具体的数值。

需要注意的是,在执行完 square = nth_power(2) 和 cube = nth_power(3) 后,外部函数 nth_power() 的参数 exponent 会和内部函数 exponent_of 一起赋值给 square 和 cube,这样在之后调用 square(2) 或者 cube(2) 时,程序就能顺利地输出结果,而不会报错说参数 exponent 没有定义。

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速