python 笔记 函数

函数

函数是组织好的,可以重复使用,用来使用单一的或关联功能的代码块

语法:

def  函数名(参数列表):

        函数体

        reture ....

可以返回多个值,返回的多个值组成一个元组,返回值加上一对中括号,则返回一个列表

函数分为定义和调用

练习:定义一个函数, 实现俩个数字的,加减乘除

a=int(input('请输入数字'))
b=input('加减乘除')
c=int(input('请输入数字'))
def wo(a,b,c):
    if b=='+':
        print(a+c)
    elif b=='-':
        print(a-c)
    elif b=='*':
        print(a*c)
    else:
        print(a/c)
wo(a,b,c)
 
 
可更改(mutable)与不可更改(immutable)对象
在python中,strings,tuples,numbers是不可更改的对象,而list,dict等则是可以修改的对象
 
不可变类型:
 
变量赋值 a=5 后在赋值a=10,这里实际是新生成一个int值对象10,再让a指向它,而5被丢弃,不是改变a的值,相当于新生成了a
 
可变类型:
变量赋值list=[1,2,3,4] 后再赋值 list[2]=5
则是将list的第3个元素的值更改,本身list没有动,只是将其指定下标的值更改了
 
python 函数的参数传递:
 
不可变类型:
 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
 
可变类型: 

列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响


参数:


必须参数     关键字参数     默认参数      不定长参数


必须参数必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样调用printme()函数,你必须传入一个参数,不然会出现语法错误:

def printme( str ):
  # "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme();

以上实例输出结果:

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    printme();
TypeError: printme() missing 1 required positional argument: 'str'

关键字参数:

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

以下实例在函数 printme() 调用时使用参数名:

def printme( str ):
#   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme( str = "sdfnbxzc");

以上实例输出结果:

sdfnbxzc
以下实例中演示了函数参数的使用不需要使用指定顺序:

def printinfo( name, age ):
  # "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="runoob" );

以上实例输出结果:

名字:  runoob
年龄:  50

默认参数:

调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:

def printinfo( name, age = 35 ):
  # "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="runoob" );
print ("------------------------")
printinfo( name="runoob" );

以上实例输出结果:

名字:  runoob
年龄:  50
------------------------
名字:  runoob
年龄:  35

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例:

#!/usr/bin/python3
 
# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print (var)
   return;
 
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

以上实例输出结果:

输出:
10
输出:
70
60
50


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值