node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)

一、函数

1、函数定义

def  函数名(参数列表):

2、返回值 return

返回值可以有多个,其实是返回一个tuple

##多个返回值

def sumDiff(x,y):

return x+y,x-y

n1,n2 = eval(input('输入两个数:'))

s,d = sumDiff(n1,n2)

print('和为{},差为{}'.format(s,d))

##计算三角形周长

import math

def square(x):

return x*x

#计算两点之间的距离

def distance(x1,x2,y1,y2):

dist = math.sqrt(square(x1-x2) + square(y1-y2))

return dist

#判断三个点是否构成三角形

def isTriangle(x1,y1,x2,y2,x3,y3):

flag = ((x1-x2)*(y3-y2) - (x3-x2)*(y1-y2)) != 0

return flag

def main():

print('输入三个坐标点(x,y):')

x1,y1 = eval(input('坐标点1(x1,y1)='))

x2, y2 = eval(input('坐标点2(x2,y2)='))

x3, y3 = eval(input('坐标点3(x3,y3)='))

#判断三个点是否构成三角形

if(isTriangle(x1,y1,x2,y2,x3,y3)):

##计算三角形周长

perim = distance(x1,y1,x2,y2)+distance(x2,y2,x3,y3)+distance(x3,y3,x1,y1)

print('该三角形周长为:{:.2f}'.format(perim))

else:

print('三个点无法构成三角形')

main()

3、参数

①位置参数

②默认参数

一是必选参数在前,默认参数在后,否则Python的解释器会报错

二是如何设置默认参数----- 定义默认参数要牢记一点:默认参数必须指向不变对象!

空列表不可作为默认参数   def  a(L=[]) ------->  def  a(L=None)

##列表最后加一个END

def add_end(L=None):

if L is None:

L = []

L.append('END')

return L

③可变参数(参数名前面加*,*args)(可以传入0个或多个参数,这些可变参数在函数调用时自动组装为一个tuple)

## 计算 1*1+2*2+3*3+.....

def calc(*numbers):

sum = 0

for n in numbers:

sum = sum + n * n

return sum

## 传参的时候,把list的所有元素作为可变参数传进去

>>> nums = [1, 2, 3]

>>> calc(*nums)

14

④关键字参数(**kw)(关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict)

def person(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

>>> person('Michael', 30)

name: Michael age: 30 other: {}

>>> person('Bob', 35, city='Beijing')

name: Bob age: 35 other: {'city': 'Beijing'}

>>> person('Adam', 45, gender='M', job='Engineer')

name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}

>>> person('Jack', 24, **extra)

name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

⑤命名关键字参数

## name、age是位置参数; *后面的city和job是命名关键字参数

def person(name, age, *, city, job):

print(name, age, city, job)

>>> person('Jack', 24, city='Beijing', job='Engineer') ##命名关键字参数必须传入参数名

Jack 24 Beijing Engineer

## name、age是位置参数;*args是可变参数, city和job是命名关键字参数

def person(name, age, *args, city, job):

print(name, age, args, city, job)

⑥参数组合

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

def wrapper(*args, **kw):  ##可以接受任意参数的调用

⑦如果变量是可变对象【列表】,返回到调用程序后,对象会呈现被修改后的状态

def addInterest(balances,rate):

for i in range(len(balances)):

balances[i] = balances[i] * (1+rate)

def test():

amounts = [1000,500,1200,789]

rate = 0.05

addInterest(amounts,rate)

print(amounts)

test() ##[1050.0, 525.0, 1260.0, 828.45]

**************实例**************

def calculateNum(principal):

# 计算星号的个数

total = int(principal*4/1000)

return total

def createTable(principal,apr):

# 为每一年绘制星号的增长图

for year in range(1,11):

principal = principal * (1+apr)

print("%2d"%year,end='')

total = calculateNum(principal)

print('*'*total)

print('0.0K 2.5k 5.0k 7.5k 10.0k')

def main():

#输入本金和利率

principal = eval(input('输入本金:'))

apr = eval(input('输入利率:'))

#建立图表

createTable(principal,apr)

main()

⑧参数检查(先对参数的数据类型做检查,抛出TypeError错误)

def my_abs(x):

if not isinstance(x, (int, float)): ## isinstance(x, (int, float) ) ------- 传入参数是否为 int 或 float 类型,返回 True // False

raise TypeError('bad operand type')

if x >= 0:

return x

else:

return -x

4、空函数

def nop():

pass

二、全局变量和局部变量

1、可以用 global 保留字在函数内部使用全局变量

n , s = 10,100

def fact(n):

s = 1 ##局部变量s

for i in range(1,n+1):

s *= i

return s

print(fact(n),s) #362880000 100

n , s = 10,100

def fact(n):

global s ##声明全局变量s

for i in range(1,n+1):

s *= i

return s

print(fact(n),s) #362880000 362880000

2、局部变量为组合类型且未创建,等同于全局变量

ls = ['a','d']

def func(a):

ls.append(a)

return

func('g')

print(ls) #['a', 'd', 'g']

ls = ['a','d']

def func(a):

ls = []

ls.append(a)

print(ls)

return

func('g') #['g']

print(ls) #['a', 'd']

三、lambda函数(特殊情况使用,建议使用def,固定情况使用)

= :

f = lambda x,y:x+y

print(f(3,4))

四、递归

在函数的定义中使用函数自身

1、函数+分支结构(if...else...)

2、基例

3、链条

##递归

##n!---n的阶乘

def fact(n):

if n == 0:

return 1

else:

return n*fact(n-1)

print(fact(5))

##字符串反转 s[::-1]

def reverse(s):

if s == '':

return s

else:

return reverse(s[1:]) + s[0]

print(reverse('Hello'))

斐波那契数列

def f(n):

if n == 1 or n == 2:

return 1

else:

return f(n-1) + f(n-2)

五、PyInstaller库(第三方库)

将 .py文件 转换成 无需源代码的可执行文件 exe文件

先安装pyinstaller库

将print1.py文件转换成exe文件,在【dist】文件夹中,【_pycache_】和【build】文件夹可以删掉

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

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

相关文章

关于linux内核的有关叙述中,下列关于嵌入式Linux系统内核的叙述正确的是()。

听力原文: A $150 million project to replace all of the vertical suspension cables on the 100-year-old Manhattan Bridge will cause occasional weekend disruptions in subway service and require closings of the bikeway and some traffic lanes for par…

WebStorm 预览时把浏览器地址localhost 改成IP

最近在使用WebStorm时,预览网页时地址总是显示的 http://localhost:63342/... ,如果要调试其它设备感觉很不方法,此时肯定首先想到的亲爱的度娘,但是貌似没有真正很解决问题的(可能是我搜索方法不对)。最后…

通用即插即用监视器驱动下载_电脑设备驱动程序有问题,教你3招,快速修复...

驱动程序允许你的设备与Windows 10进行通信。计算机必须安装最新版本的驱动程序才能正常运行。设备驱动程序是一种特殊的软件程序,它控制连接到计算机的特定硬件设备,设备驱动程序对于计算机促进系统与所有已安装程序或应用程序之间的通信至关重要&#…

python在线投票系统讲解_在线投票系统功能分析

网上投票系统的功能一、功能概述(1)客户模块客户模块主要是添加投票项目信息,比如投票项目的题目,选项以及系统配置的要求。(2)新闻模块新闻模块主要是一些关于本系统的新闻信息,其中包括新闻显示和添加删除模块。(3)留言薄模块留言薄模块主要…

linux内存管理的主要概念是虚拟内存,你知道linux内存管理基础及方法?

描述一、基本概念(1)物理内存和虚拟内存物理内存:系统硬件提供的真实物理内存虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为swap,swap类似于windows的虚拟内存。1、linux的内存管理采取的分页存取机制…

R plot图片背景设置为透明_R语言入门第十二讲:基础绘图(二)------plot与par函数(1)...

上一次给大家简单展示了plot函数的用法,以及par函数的使用。今天我们继续应用这两个函数,看看它的其他功能。下面这个图是数据的一部分[1]。我一直认为,作图简单,但关键是要知道数据在数据库中的格式,才能更好的应用到…

qqkey获取原理_【逆向】QQkey盗号木马原理分析

一、简介QQkey是一段字符串,通过这段字符串在没有QQ登录密码的前提下你依然能够在浏览器中对别人QQ空间、邮箱等应用进行随意访问和操作。现在市面上已经有很多使用易语言编写的盗号木马,专门盗取别人的QQkey,通过QQkey改绑关联了该邮箱的Ste…

visual studio 2015 搭建python开发环境,python入门到精通[三]

在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo,这里略带一句,其实就"学习python"而言,比较建议使用pycharm,pychar…

linux 用脚本建分区,脚本创建磁盘分区

首先最好添加一个空白的磁盘,以免对原数据产生破坏,若果不想添加磁盘也可以,用一个里面数据无关紧要的磁盘,当然前提是必须要对该磁盘内已有的分区进行清空,方法后面第三步会有1.先看脚本内容:[rootlocalho…

如何给打印机墨盒加墨

今天打印东西突然遇到问题了,显示墨盒黑色没墨了,网上一搜,整套的墨盒大几十,随手换了一个关键词 墨盒墨水 这下不到十块钱解决,正好锻炼下自己的动手能力(其实就是穷嘛。。。) 接下来就分享下动…

三轴加速度传感器和六轴惯性传感器_六轴传感器和三轴传感器的区别

六轴传感器和三轴传感器的区别重力重力传感器就是利用了其内部的由于加速度造成的晶体变形这个特性。由于这个变形会产生电压,只要计算出产生电压和所施加的加速度之间的关系,就可以将加速度转化成电压输出。当然,还有很多其它方法来制作加速…

全局莫兰指数_空间自相关 | 莫兰指数

空间自相关:是指一些变量在同一个分布区内的观测数据之间潜在的相互依赖性。其中,自相关中的“自”表示当你进行相关性观察统计量,是来源于不同对象的同一属性。Tobler(1970)曾指出“地理学第一定律:任何东西与别的东西之间都是相…

宏函数和函数的区别

转载自: http://www.ccidnet.com/2010/0709/2110463.shtml 1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型. 2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值…

linux vi 排序命令,10 个你必须掌握的超酷 VI 命令技巧

摘要:大部分Linux开发者对vi命相当熟悉,可是遗憾的是,大部分开发者都只能掌握一些最常用的Linux vi命令,下面介绍的10个vi命令虽然很多不为人知,但是在实际应用中又能让你大大提高效率。在使用vi 编辑器时—无论是初次…

python微信机器人部署服务器_玩法收藏/云服务器/零基础微信机器人实践( Python )...

最近想做个微信机器人,主要是为了个人方便。在腾云阁发现这个教程,得到了一些启发。(修改转载已取得腾讯云授权)技术路径和实现思路首先编程语言使用了 Python , Python 语法简洁、第三方扩展丰富,也因为这里采用的微信消息框架 i…

arduino 水位传感器_云南可信赖的威卡压力传感器哪里有

云南可信赖的威卡压力传感器哪里有 k52gh264云南可信赖的威卡压力传感器哪里有 在生产生活中,对压力表的正确使用为工业生产提供了一定程度的便利。.指针转动受阻在检修过程中,先给弹賛管式压力表施加压力,如果发现被检测表的指针成比例变快或…

小甲鱼Python笔记(下)

二十八 二十九 文件 打开文件 open(文件名[,模式][,缓冲])  注意open是个函数不是方法 模式: 缓冲: 大于1的数字代表缓冲区的大小(单位是字节),-1(或者是任何负数)代表使用默认缓冲区大小 只…

linux内核编译后 make: 警告:检测到时钟错误.,系统时钟 make: 警告:检测到时钟错误。您的创建可能是不完整的。...

修改Linux的时间修改Linux时间一般涉及到3个命令: date, clock, hwclockdate: 修改系统当前的时间:[root]#date –s ‘2005/12/5 10:01:00系统当前的时间改成2005年12月5日,10点01分这个修改在系统重启后就…

linux服务器搭建_学linux可以做什么具体的就业方向是什么

学linux可以做什么当今世界流行的操作系统有3大类,Linux、Mac OS和Windows操作系统,Linux操作系统因其开源、免费、跨平台、良好的界面等特性,深受广大程序员们的青睐!Linux操作系统被广泛的应用于企业服务器领域,目前…

vue 给iframe设置src_vue组件中使用iframe元素

需要在本页面中展示vue组件中的超链接,地址栏不改变的方法:GoBack{{item.name}}export default {name: hello,data () {return {iframeState:false,goBackState:false,webAddress: [{name:segmentFault,link:https://segmentfault.com/a/1190000004502619},{name:博…