Python def函数给出的语法无效

Python def函数给出的语法无效,python,python-2.7,syntax-error,Python,Python 2.7,Syntax Error,据我检查,缩进是正确的,没有括号丢失,我在前面几行中只导入了包,但仍然得到无效语法错误 #!/usr/bin/python import bpy import mathutils import numpy as np from math import radians from mathutils import Vector from math import radians from mathutils import Matrix from bpy import context def tran

据我检查,缩进是正确的,没有括号丢失,我在前面几行中只导入了包,但仍然得到无效语法错误

#!/usr/bin/python
import bpy
import mathutils
import numpy as np
from math import radians
from mathutils import Vector
from math import radians
from mathutils import Matrix
from bpy import context

def transform_mesh('parent', 'obj_to_be_transformed', (translate_x, translate_y, translate_z), (rot_x,rot_y,rot_z)):

    obj= bpy.data.objects[parent]
    obj1= bpy.data.objects[obj_to_be_transformed]
    initial_mat = obj1.matrix_world

    ...some code

    (x,y,z) = (translate_x, translate_y, translate_z)  
    orig_loc_mat = Matrix.Translation(orig_loc+ mathutils.Vector((x,y,z)))

    ...some more code

    eul = mathutils.Euler((radians(rot_x), radians(rot_y), radians(rot_z)), 'XYZ')
    rot_mat = eul.to_matrix().to_4x4()

    obj.matrix_world = orig_loc_mat * rot_mat * orig_rot_mat * orig_scale_mat 
    bpy.context.scene.update()

    return [initial_loc,initial_rot,initial_scale,loc,rot,scale]


transform_result= transform_mesh('Armature','Coil',(5,0,0),(0,0,1))
print (transform_result)
错误是:

Error:   File "D:\users\gayathri\Gayathri\Synthetic_data_generation\Final\HMI_Depth_coilA_final_final.blend\Untitled", line 18
def transform_mesh('parent', 'obj_to_be_transformed', (translate_x, translate_y, translate_z), (rot_x,rot_y,rot_z)):
                                                                                                          ^
SyntaxError: invalid syntax

location: <unknown location>:-1
错误:文件“D:\users\gayathri\gayathri\Synthetic\u data\u generation\Final\HMI\u Depth\u coilA\u Final\u Final.blend\Untitled”,第18行
def transform_mesh('parent','obj_to_be_transformed',(translate_x,translate_y,translate_z),(rot_x,rot_y,rot_z)):
^
SyntaxError:无效语法
地点::-1
应该是

def transform_mesh(parent, obj_to_be_transformed,

当然?

元组参数在Python3中不受支持,但您可以将其作为变量传递,并在定义函数后将其解压缩

def transform_mesh(translate_xyz):
    translate_x, translate_y, translate_z = translate_xyz    

1-从参数中删除字符串

2-从参数中删除元组并在函数中为它们添加属性(添加一些检查可能会有用)

给你:

def transform_mesh(parent, obj_to_be_transformed, translate, rot):
    translate_x, translate_y, translate_z= translate
    rot_x,rot_y,rot_z = rot

    # etc


transform_result= transform_mesh('Armature','Coil',(5,0,0),(0,0,1))
print (transform_result)

您需要提供变量作为函数的参数

def transform_mesh(translate_xyz):
    translate_x, translate_y, translate_z = translate_xyz    
尝试以下方法:

def transform_mesh(parent, obj_to_be_transformed, t1, t2):
尽管在您共享的代码中,始终使用t1和t2作为元组。但是,如果要单独使用x、y和z,可以通过引用索引来实现:

x = t1[0]
y = t1[1]

在此行中,函数参数的传递方式不正确

    def transform_mesh('parent', 'obj_to_be_transformed', (translate_x, translate_y, translate_z), (rot_x,rot_y,rot_z)):
正确的语法是:

    def transform_mesh(parent, obj_to_be_transformed, *translate_xyz, *rot_xyz): #*translate_xyz and *rot-xyz are tuple parameter

你的参数不应该是字符串:
transform\u mesh(parent,obj\u to\u be\u transform,(translate\u x,translate\u y,translate\u z),(rot\u x,rot\u y,rot\u z)):
Wow,我不知道嵌套的参数列表是可能的。@mkrieger1:这些不是完全嵌套的参数,它们是元组作为参数。好的,显然,在较新的Python版本中,这已经不可能了:@Nuageux ok now它将错误指向
(translate\ux,translate\uy,translate\uz)
我使用Python2.7,但会尝试将其作为参数传递并尝试。或者干脆
x,y=t1
@mkrieger1同意。但只有在我们需要单独的所有元素的情况下。不客气。请随意接受您喜欢的答案,以便将您的问题标记为已解决:)