基础篇 - 详解python函数

 

1、何为函数

1、首先我们来了解一下在Python中何为函数。

    简单说,函数是用特定的语法定义,可实现一定功能的,或者相关功能的,可重复执行的代码段。

    

    不管如何一种编程语言,我们都应该知道这两点:

 

  1.    写重复代码是极不好的,是不符合我们程序员的高贵气质的
  2. 我们以后写的代码可能需要经常修改,不断维护和迭代,用长远的眼光写代码

    

这时候,函数、模块、类就出现了。

 

函数的作用:

 

  1. 能提高代码的重复利用率-------需要的时候就调用,不用反复写相同的代码
  2. 提高了应用的模块型--------将功能分门别类,比如一个函数定义一个功能,使代码和功能井井有条
  3. 提高了阅读性,降低了维护难度, ----------就好比注释一样,起一个见名知意的函数名,代码格式优良,不仅自己写代码的时候心中有数,将来维护的兄弟也会万分感谢。

 

2、如何定义函数

 

   既然函数这么好,那怎么定义呢?

 

1.语法

我们举一个最简单的例子:

# 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
def print_hello(fri):      # 圆括号之间可以用于定义参数
    for i in range(fri):
         print("Hello World")


print_hello(20)   #  函数将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
 

附:C++和java里面的函数是怎么定义的

 /* C++ 中的函数定义的一般如下:
return_type function_name( parameter list )
{
   body of the function
}*/
// 函数返回两个数中较大的那个数
 
int max(int num1, int num2)  # 形参 
{
   // 局部变量声明
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

 

 
//java中定义函数:
/*修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}*/
 /* 返回两个整数变量较大的值 */ 
public static int max(int num1, int num2)  #形参
{     
     
      int result;  
     if (num1 > num2)
        result = num1;  
     else      
        result = num2; 
     
     return result;  


}
 

 

3、函数的实参和形参

 

    形参也称为形式参数,既然提到形式,就是说它定义参数的类型和个数,如在C++和java这种强类型语言中,在编译的时候对数据类型进行严格检查,一旦类型写错了,编译都通不过。

    但在Python中,类型属于典型,因此变量是没有类型的,也就谈不上指定形参、实参或者变量的数据类型了。所以形参在Python的功能就是定义了要传入参数的个数。

    实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

 

2、默认参数

def stu_register(name,age,country,course):
    print("----注册学生信息------")
    print("姓名:",name)
    print("age:",age)
    print("国籍:",country)
    print("课程:",course)
 
stu_register("stu1",20,"CN","python")
stu_register("stu2",21,"CN","C++")
stu_register("stu3",19,"CN","Linux")

发现 country 这个参数 基本都 是"CN", 就像我们在网站上注册用户,像国籍这种信息,你不填写,默认就会是 中国, 这就是通过默认参数实现的,把country变成默认参数非常简单

def stu_register(name,age,course,country="CN"):
另外,你可能注意到了,在把country变成默认参数后,我同时把它的位置移到了最后面,为什么呢? 

4、关键参数


给函数传参数要按位置形参的顺序,赋值时形参与实参的值一一对应。不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。

 

stu_register(age=22,name='Echo',course="python",)  #调用函数并传参

 

 

5、非固定参数

 

如果在函数定义时不能确定将来传入的实参有多少个,可以使用非固定参数。

 

def stu_register(name,age,*args): # *args 会把多传入的参数变成一个元组形式
    print(name,age,args)
 
stu_register("Echo",22)
#输出
#Alex 22 () #后面这个()就是args,只是因为没传值,所以为空
 
stu_register("Jack",22,"CN","Python")
#输出
# Jack 32 ('CN', 'Python')
for i in range(20):
    print_hello()

还可以有一个**kwargs :把多传入的参数当做一个字典的形式

def stu_register(name,age,*args,**kwargs): # *kwargs 会把多传入的参数变成一个dict形式
    print(name,age,args,kwargs)
 
stu_register("Echo",20)
#输出
#Echo 20 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空字典,列表也为空
 
stu_register("Alex",33,"CN","Python",sex="Male",province="ShanDong")
#输出
# Alex 33 ('CN', 'Python') {'province': 'GuangDong', 'sex': 'Male')

 

 

6、全局变量和局部变量

 

Python在这一点上其实和C++、Java非常相似。

 

局部变量即是定义在局部代码块里面的变量,在C++、Java中{} 即是一个代码块,出了这个大括号都无法调用里面的变量。

 

全局变量在程序的一开始定义的变量称为全局变量,作用域是整个程序。

 

 

 

 

7、返回值  

 

函数执行完后的结果可以通过return 扔出来,支持其他模块的继续执行。

应该注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值