python3 函数特性

1.定义函数

def haha()    定义关键字:def;函数的名字()括号需要存在   自定义函数里面的参数成为形参,不需要有值

      函数体     #函数体需要进行缩进,

 haha()    调用函数,调用函数时,里面的参数成为实参需要有值

2.定义空函数

定义一个什么事都不用做的空函数,使用pass语句;pass用来做占位符,还没有想好代码怎么写放置pass让代码运行;

def hell():

     pass

 

3.函数返回值:

扫描二维码关注公众号,回复: 2348767 查看本文章

def hello(name):

    #print("hello %s"%(name))

    return  "python"     #关键字,定义函数的返回值,通过print打印

print(hello("c"))             #调用函数,打印返回值

返回一个tuple可以省略括号;python里面的函数返回多值其实就是返回一个tuple;函数如果没有返回值,默认为none

4.return 关键字

 def hello():

     return "ok"     #函数一旦遇到关键字return不会在执行后面的命令;

     print("hello")


 print(hello())      #调用函数可以进行打印返回值

 

 

5.调用定义函数,遍历循环列表,以次输出

 def hello(n):

     print("hellp %s"%(n))

 for username in ["c++", "python"]:

     hello(username)

 

6.函数的参数检查

1.调用参数时,如果参数个数不对,python解释器会检查出来并进行报错;

2.如果参数类型不对,解释无法识别

3.数据类型检查可以使用内置函数isinstance实现   (“情况,建议,实例”专业术语,实例)


7.返回值:求取平方或者几次方

 def mypow(a,b):

     return a ** b


 print(mypow(2,4))    #求取2的4次方

 print(mypow(2))      #传递的参数不够或者超出都会进行报错;

 

 

 8.函数参数

 形参:可选参数

当形参里面*变量名表示可选参数,可选参数可以传递任意个参数;

 def mysum(*args):      #可选参数一般默认arges

     return sum(args)

 print(mysum(1,2,3))     #传递多个参数进行求和

 

形参:关键字参数,定义:**变量名,可以接受任意多个key-value值键对;

 def get_info(username,passwd,**kwargs):

     print(username,passwd)

     print(kwargs,type(kwargs))


 

 

 

 

9.函数的作用域:全局作用域,局部作用域

全局作用域作用整个脚本

 num = 10

 print("num=",num)   #打印10的ASII码的地址

 

 

局部作用域:

 def fun():

     num = 2   #局部函数作用域函数运行结束被释放。

     print("id=",id(num))

     print("num=%s"%(num))

 fun()

 

使用global声明局部变量为全剧变量

 count = 10

 print("全局变量:%s"%(count))

def hello():

     global count

     count = 20

     print("局部变量:",count)


 hello()   #调用函数

 print(count)

 

 10.Collatz序列

编写一个名为collatz()的函数,它有一个名为number的参数。如果参数是偶数,那么collatz()就打印出number//2,并返回该值。如果number是奇数,collatz()就打印并返回3*number+1。 然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。

def collatz(number):

      if number%2 == 0:

         return number//2

      else:

         return 3*number+1

 def main():

     num = int(input("请输入数字:"))

     while True:

          if collatz(num) == 1:

               print(1)

               break

          else:

              num = collatz(num)

              print(num)

 main()      #调用函数,函数里面有值,调用时可以不用输入

 

11.ip重复统计:

随即生成200个ip

ip的范围172.25.254.1-172.25.254.200之间;

输出所有不通的ip及其每个ip重覆1次数

 import random

 l = []

 for i in range(200):

     ip = "172.25.254." + str(random.randint(1,200))

     l.append(ip)


 ip_count = {}

 import pprint

将遍历的ip地址存放进空的集合,ip_count[ip]对应相应的value值

 print(type(ip_count))

 for ip in l:

     if ip in ip_count:

         ip_count[ip] += 1

     else:

         ip_count[ip] = 1

 pprint.pprint(ip_count)  #可以调用pprinte竖向打印

 


12.数字重复统计

随机生成1000个整数;

数字范围20-100

升序输出所有不同的数字及其每个数字重复次数

 n = int(input("请输入生成整数的个数:"))

 import random

 number_list = []

 for i in range(n):

     new_number = random.randint(20,100)

     number_list.append(new_number)

 #print(number_list)    #打印生成的数字,查看是否正确:

 list = sorted(number_list)[::-1]

 number_count = {}

 import pprint

 for number in list:

     if number in number_count:

         number_count[number] += 1

     else:

         number_count[number] = 1

pprint.pprint(sorted(number_count)[::-1])   #  打印升序排列的数字

pprint.pprint(number_count)   #计算列表里面重复次数

猜你喜欢

转载自blog.csdn.net/weixin_39249306/article/details/80515102