zoukankan      html  css  js  c++  java
  • python_函数的基本操作

      1 ##---------------------- 函数 ----------------------
      2 
      3 ##1 定义函数
      4 def hello_py():
      5     print('hello,python!')
      6     
      7 hello_py()
      8 ##1.1向函数传递消息
      9 def get_message(username):
     10     print('Hello,'+username.title()+'!')
     11 name=input('请输入你的姓名:')
     12 get_message(name)
     13 ##1.2实参和形参
     14 '''
     15 前面定义函数 get_message() 时,要求给变量 username 指定一个值。调用这个函数并提供这种
     16 信息(人名)时,它将打印相应的问候语。
     17 在函数 get_message() 的定义中,变量 username 是一个形参——函数完成其工作所需的一项信
     18 息。在代码 get_message(name) 中,值 name 是一个实参。实参是调用函数时传递给函数的信
     19 息。我们调用函数时,将要让函数使用的信息放在括号内。在 get_message(name) 中,将实参
     20 name的值 传递给了函数 get_message() ,这个值被存储在形参 username 中。
     21 
     22 形参和实参位置顺序要一一对应
     23 函数也可以多次调用
     24 基本上与C语言一样
     25 '''
     26 ##1.3默认值
     27 '''
     28 编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用
     29 指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略
     30 相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。
     31 '''
     32 def describe_pet(pet_name,animal_type='哈士奇'):
     33     #显示宠物的信息
     34     print('我在家养过宠物,我给它起名叫做:'+pet_name)
     35     print(pet_name+'是一只非常好的'+animal_type)
     36 describe_pet('神奇')##第二个参数使用默认值
     37 
     38 ###1.4各种调用方法
     39 describe_pet('传奇')
     40 describe_pet(pet_name='传奇')
     41 describe_pet('可可','')
     42 name='巧巧' 
     43 an_type=''
     44 describe_pet(name,an_type)##利用别的变量传递
     45 ##1.5返回简单值
     46 def get_formatted_name(first_name,last_name):
     47     full_name=last_name+' '+first_name
     48     return full_name.title()
     49 musician=get_formatted_name('','慕容')
     50 print(musician)
     51 ##1.5让实参变成可选的
     52 '''
     53 有时候,需要让实参变成可选的,这样使用函数的人就只需在必要时才提供额外的信息。可
     54 使用默认值为空来让实参变成可选的。
     55 '''
     56 ##返回字典
     57 def build_person(first_name,last_name,age=''):##此处利用age默认值为空实现了参数的可选择性
     58     ##返回一个在字典,其中包括一个人信息
     59     person={'first':first_name,'last':last_name}
     60     if age:
     61         person['age']=age
     62     return person
     63 musician=build_person('','欧阳')
     64 print(musician)
     65 print('---------------------------------')
     66 ##函数和while循环的结合
     67 circulation=True##循环变量
     68 while circulation:
     69     print('输入你的名字和姓氏:')
     70     f_name=input('first_name:')
     71     l_name=input('last_name:')
     72     full_name=build_person(f_name,l_name)
     73     print('你好'+str(full_name['first']+str(full_name['last'])))
     74     print('后面,还有小朋友吗?(yes/no)')
     75     answer=input()
     76     if answer=='no' or answer=='NO' or answer=='n':
     77         circulation=False
     78 
     79 ##传递列表
     80 print('-----------------------------------------')
     81 def greet_user(names):
     82     for name in names:
     83         msg='hello'+name.title()+'!'
     84         print(msg)
     85 
     86 user_list=['小明','小华','杰克']
     87 greet_user(user_list)
     88 ##在函数中修改列表
     89 print('---------------------------------------------')
     90 
     91 
     92 ##函数后序内容
     93 '''
     94 将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永
     95 久性的,这让你能够高效地处理大量的数据。
     96 来看一家为用户提交的设计制作3D打印模型的公司。需要打印的设计存储在一个列表中,
     97 打印后移到另一个列表中。
     98 '''
     99 def print_models(unprinted_designs,completed_models):
    100     ##打印每个设计后,都将其移到列表completed_models中
    101     while unprinted_designs:
    102         current_design=unprinted_designs.pop()
    103         
    104         ##模拟根据要求的打印过程
    105         print('正在打印中的模型是:'+current_design)
    106         completed_models.append(current_design)
    107 def show_completed_models(completed_models):
    108     ##显示所有打印好的模型
    109     print('打印完成的模型列表:
    ')
    110     for print_over_models in completed_models:
    111         print('	'+print_over_models)
    112         
    113 unprinted_designs=['160_轰炸机','米格——3k拦截机','苏——57战斗机','F22战斗机']
    114 completed_models=[]
    115 print_models(unprinted_designs,completed_models)
    116 print('
    
    ')
    117 show_completed_models(completed_models)
    118 
    119 ##禁止函数修改列表(利用列表切片实现)
    120 ##例:print_models(unprinted_designs[:],completed_models[:])
    121 
    122 ##传递任意数量的参数
    123 def make_pizza(*topping):
    124     ##其中实参*topping是一个元组,所以可以传递任意数量的参数
    125     '''打印顾客点的所有配料'''
    126     print(topping)
    127 
    128 make_pizza('洋葱')
    129 make_pizza('洋葱','鸡蛋','面粉','培根')
    130 
    131 ##使用任意数量的关键字实参
    132 ##其中,下面的**user_info可以理解为一个字典
    133 def build_profile(first,last,**user_info):
    134     '''创建一个字典,其中包含我们知道的有关用户的一切'''
    135     profile={}
    136     profile['first_name']=first
    137     profile['last_name']=last
    138     for key,value in user_info.items():
    139         profile[key]=value
    140     return profile
    141     
    142 user_profile=build_profile('','飞燕',性别='',职业='舞蹈艺术家')
    143 print(user_profile)

     将函数存储在模块中:

    下面有两个.py文件(pizza.py和making_pizza.py)用来演示函数模块的导入方式

    1 #将函数存储在模块中
    2 def make_pizza(size,*toppings):
    3     ##概述披萨的制作要求:
    4     print('披萨的尺寸是:'+str(size)+'以及需要的配料有:')
    5     for topping in toppings:
    6         print('	'+str(topping))
    7     
     1 pizza.make_pizza(10,'小麦','牛奶','洋葱','鸡蛋')
     2 
     3 ##导入特定的函数
     4 ##你还可以导入模块中的特定函数,这种导入方法的语法如下:
     5     #form module _name import function_name
     6 ##通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数:
     7     #form module_name import function_name1,function_name2,function_name3
     8     
     9 ##使用as可以给函数起别名
    10 '''如果要导入的函数的名称可能与程序中现有的名称冲突,或者函数的名称太长,可指定简短
    11 而独一无二的别名——函数的另一个名称,类似于外号。要给函数指定这种特殊外号,需要在导
    12 入它时这样做。
    13 '''
    14 from pizza import make_pizza as mp
    15 mp(10,'面粉')
    16 
    17 
    18 
    19 ##也可以使用as给模块起别名
    20 import pizza as pa 
    21 p.make_pizza(10,'')
    22 
    23 
    24 ##导入模块中的所有函数
    25 from pizza import *
    26 '''import 语句中的星号让Python将模块 pizza 中的每个函数都复制到这个程序文件中。由于导入
    27 了每个函数,可通过名称来调用每个函数,而无需使用句点表示法。然而,使用并非自己编写的
    28 大型模块时,最好不要采用这种导入方法:如果模块中有函数的名称与你的项目中使用的名称相
    29 同,可能导致意想不到的结果:Python可能遇到多个名称相同的函数或变量,进而覆盖函数,而
    30 不是分别导入所有的函数。最佳的做法是,要么只导入你需要使用的函数,要么导入整个模块并
    31 使用句点表示法。这能让代码更清晰,更容易阅读和理解。
    32 '''
  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/best-mingge/p/12866975.html
Copyright © 2011-2022 走看看