All endings are beginnings, we just don't know it at the time.
函数的参数传递
可以使用位置参数或关键字参数传递给函数,但是位置参数不能出现在任何关键字参数的后面,例如
def f(p1, p2, p3)
调用的时候可以使用位置参数:f(1,2,3)
也可以使用关键字参数:f(p1=1, p2=2,p3=3),此时参数位置可以变化。
但是使用f(1,p2=2,3)是错误的,因为位置参数3出现在关键字参数p2的后面。
通过引用传递参数
当传递数字和字符串等不可变参数给函数时,函数内部形参改变了,但是实参却不变,真正原因是数字和字符串是不可变对象,不可变对象的内容是不能被改变的,当改变的时候Python会为这个新的值创建一个新的对象。但是如果传递一个可变的参数(例如对象)给函数,如果函数中将对象的某个参数改变了,那么实参的这个属性值也就跟着变了。如:
>>> a=3
>>> id(a)
4300223496
>>> a+=1
>>> id(a)
4300223472
⚠️在同一个模块中定义两个同名函数,不会出现语法错误,但后者的优先级更高
可以使用global语句将变量设置成全局变量。
函数可以混合使用默认值参数和非默认值参数,这种情况下,默认值参数必须在非默认值参数的后面定义。如:
def printArea(width , height = 1.0)
Python函数可以同时返回多个值。当调用的时候,需要同时赋值传递这些返回值,如下:
def sort(num1, num2):
return num1, num2
n1, n2 = sort(3, 2)
随机生成0到127之间的ASCII码:chr(randind(0, 127))
随机生成小写字母a到z之间的字母:chr(randint(ord('a'), ord('z')))
开发时,多使用自顶向下的设计和自底向上的实现,可以先将整体的框架搭建好,然后经过调试再逐步实现的方式积累解决问题的经验。
网友评论