python入门(四)函数

函数

  • 关键字 def 后接函数名称和圆括号()
  • 传人参数必须放到圆括号中()
  • 函数第一行使用冒号:结尾
  • 函数体使用缩进分割
#!/usr/bin/python3

def getPerson():
    return 'hello word'

print(getPerson()
#输出结果:hello word

默认参数

  • 必选参数必须在前面,默认参数在后。
  • 默认参数一般为,参数值变化小的设置为默认参数。
#!/usr/bin/python3

def getPerson(name, sex, age = '18'):
    return 'name=' + name + '\nsex=' + sex + '\nage=' + age

print(getPerson('lxy', 'f')
#输出结果:
name=lxy
sex=f
age=18

参数

  • 在python,类型属于对象,变量是没有类型的
a = 'hello word'
a = [1,2,3]
  • 上面的例子中 'hello word' 是String类型,[1,2,3]是List类型 变量a是一个指针它可以是String类型也可以是List类型

可更改对象

  • List(列表)Sets(集合)Dictionaries (字典) 是可变类型
#!/usr/bin/python3
nums = [1, 2, 3]
nums[0] = 5
print(nums)
#输出结果:[5, 2, 3]
  • 变量赋值nums = [1, 2, 3] 后再赋值nums[0]=5,则是将list nums的第1个元素值更改,本身nums没有动,只是其内部的一部分值被修改了。

不可变对象

  • Numbers (数字) String (字符串) Tuple (元组) 为不可变对象
#!/usr/bin/python3
a = 'hello'
a = 'word'
print(a)
#输出结果:word
  • 这里a赋值‘hello’再赋值'word', 其实是重新生成一个String类型,然后hello被丢弃,重新指向word,相当于新生成a
#!/usr/bin/python3
def ChangeInt( a ):
    a = 10

b = 2
ChangeInt(b)
print(b)
# 输出结果2
  • 调用ChangeInt(b) 传值的时候 a 、b指向同一类型 2
  • 但a = 10 的时候就重新生成了一个新的对象

命名参数

  • 一般给函数传参数的时候,需要按照顺序传参,但是可以使用命名参数就不需要按照顺序传参数
  • 如下例子,两种输出方式是一样的
#!/usr/bin/python3
def getPerson(name, age):
    print('name=',name)
    print('age=', age)
getPerson('lxy', 11)
getPerson(age=11, name='lxy'
#输出结果
name= lxy
age= 11

不定长传参

  • 有的时候可能需要多个参数,但是又不想写多个参数来接收就可以使用不定长传参
  • 使用 *
#!/usr/bin/python3
def nums(n, *num):
    print(n,num)

nums(1,2,3,4,'aaa')

输出结果:1 (2, 3, 4, 'aaa')
  • 想获取其中一个值 可以使用下标
#!/usr/bin/python3
def nums(n, *num):
    print(n,num[0])

nums(1,2,3,4,'aaa')
#输出结果:1 2

匿名函数

  • 关键字 lambda
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
#!/usr/bin/python3

sum = lambda n1,n2: n1+n2

print(sum(1,2))
#输出结果:3

全局变量和局部变量

  • 定义在函数内部的都有一个局部作用域,定义在全局的是全局作用域
  • 局部变量只能在函数内部使用
  • 全局变量可以在全局使用
#!/usr/bin/python3
total = 10
def sum():
    print('total=', total)

sum()
#输出结果:total= 10
  • total 为全局变量可以在函数sum内部使用
#!/usr/bin/python3
def sum():
    a = 10

print(a)
#输出结果:NameError: name 'a' is not defined
  • a是在sun内部声明的,所以在函数外部调用会报错
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容