封装功能,提高应用的模块性和代码重用率
1.1 函数内的第一条语句是字符串时,该字符串就是文档字符串(docstring)
def my_fun():
'''我是文档字符串
函数内第一句是字符串时
该字符串就是文档字符串
'''
pass
print(my_fun.__doc__)
''' 运行结果:
我是文档字符串
函数内第一句是字符串时
该字符串就是文档字符串
'''
1.2 创建一个可以判断一个整数是否是素数的函数
# 判断某个整数是否是素数,是返回Ture,不是返回False
def isPrimer(num):
if num == 1:
return False
for i in range(2, num//2 + 1):
if num%i == 0:
return False
return True
# 判断某个区间内的素数
def CircleIsPrimer(head, stop):
MyDict = {True: '素数', False: '非素数'}
for i in range(head, stop+1):
print(i, ' is ', MyDict[isPrimer(i)])
# 主函数
def main():
print(isPrimer(2))
CircleIsPrimer(1, 15)
# 调用主函数
main()
''' 运行结果
True
1 is 非素数
2 is 素数
3 is 素数
4 is 非素数
5 is 素数
6 is 非素数
7 is 素数
8 is 非素数
9 is 非素数
10 is 非素数
11 is 素数
12 is 非素数
13 is 素数
14 is 非素数
15 is 非素数
'''
1.3 创建一个可以输出限定数值内的斐波拉契数列函数
def fib(num):
a, b = 0, 1
result = []
while a < num:
result.append(a)
a, b =b, a + b
return result
print(fib(10))
''' 运行结果
[0, 1, 1, 2, 3, 5, 8]
'''
在Python中,对象有不同类型的区分,变量没有类型
2.1 默认参数。定义函数时,需要从右往左给参数默认值,调用函数时,如果没有传递参数,则会使用默认参数
def loves(who,how='sincerely love',what='Python',why='Only because I love it'):
print(who, end=' ')
print(how, end=' ')
print(what)
print(why)
return
loves('I')
''' 运行结果
I sincerely love Python
Only because I love it
'''
2.2 关键字。使用关键字参数允许函数调用时参数的顺序与声明时不一致
# 判断某个整数是否是素数,是返回Ture,不是返回False
def isPrimer(num):
if num == 1:
return False
for i in range(2, num//2 + 1):
if num%i == 0:
return False
return True
# 判断某个区间内的素数
def CircleIsPrimer(head, stop):
MyDict = {True: '素数', False: '非素数'}
for i in range(head, stop+1):
print(i, ' is ', MyDict[isPrimer(i)])
CircleIsPrimer(stop = 15, head = 1)
''' 运行结果
1 is 非素数
2 is 素数
3 is 素数
4 is 非素数
5 is 素数
6 is 非素数
7 is 素数
8 is 非素数
9 is 非素数
10 is 非素数
11 is 素数
12 is 非素数
13 is 素数
14 is 非素数
15 is 非素数
'''
2.3 不定长参数。加了*的参数会以元组的形式导入,存放所有未命名的变量参数。加了**的参数会以字典的形式导入
# 2.3.1 以元组形式导入,包含形参列表之外的位置参数
def isLovePython(who, how, what, *why):
print(who, end=' ')
print(how, end=' ')
print(what)
print(why)
return
isLovePython('I', 'love', 'Python', 'only', 'because', 'I', 'love', 'it')
''' 运行结果
I love Python
('only', 'because', 'I', 'love', 'it')
'''
# 2.3.2 以字典形式导入,包含已定义形参对应之外的所有关键字参数
def isLovePython(**lovePython):
print(lovePython)
return
isLovePython(who='I', how='sincerely love', what='Python')
''' 运行结果
{'who': 'I', 'how': 'sincerely love', 'what': 'Python'}
'''
# 2.3.3 二者组合使用,*形参 必须在 **形参之前
def LovePython(who_, *how_, **info):
print(who_)
print(how_)
print(info)
return
LovePython('I', 'need', 'Python', who='live', how='is short')
''' 运行结果
I
('need', 'Python')
{'who': 'live', 'how': 'is short'}
'''
2.4 强制位置参数。限制参数的传递方式
def my_fun(a, b, /, c, d, *, e, f):
pass
# a,b 必须是位置形参
# c,d 位置形参或关键字形参
# e,f 必须是关键字形参
3.1 用*把实参从列表或元组中解包出来
love = ['I', 'need', 'Python']
def Printf(who: str, how: str, what: str = 'MySQL') -> None:
print(who, '', how, '', what)
return
Printf(*love)
''' 运行结果
I need Python
'''
3.2 用**把实参从字典中解包出来
love = {'who': 'I', 'how': 'need', 'what': 'Python'}
def Printf(who: str, how: str, what: str = 'MySQL') -> None:
print(who, '', how, '', what)
return
Printf(**love)
''' 运行结果
I need Python
'''
常规定义函数的语法糖,只能是单个表达式
# 4.1 把匿名函数作为传递的实参
# 案例1:把 python、pytorch、pandas 筛选出来
love = ['python', 'PHP', 'pytorch', 'MySQL', 'pandas']
loveAI = filter(lambda x: x[0] == 'p', love)
print(list(loveAI))
''' 运行结果
['python', 'pytorch', 'pandas']
'''
# 案例2:字母全变大写
love = ['python', 'PHP', 'pytorch', 'MySQL', 'pandas']
love = map(lambda x: x.upper(), love)
print(list(love))
''' 运行结果
['PYTHON', 'PHP', 'PYTORCH', 'MYSQL', 'PANDAS']
'''
# 4.2 把匿名函数作为函数返回值
love = ['python', 'PHP', 'pytorch', 'MySQL', 'pandas']
def LoveAI():
return lambda x: x[0] == 'p'
love_AI = LoveAI()
loveAI = filter(love_AI, love)
print(list(loveAI))
''' 运行结果
['python', 'pytorch', 'pandas']
'''
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决