I am trying to define a style to draw a bend line from one shape's south to another shape's west
\documentclass[border=5mm, convert, usenames, dvipsnames]{standalone}
\usepackage{tikz, pifont, xcolor}
\usetikzlibrary{shapes, positioning, calc, arrows.meta, matrix, chains, scopes, fit}
\usepackage{lmodern}
\usepackage{underscore}
\begin{document}
\begin{tikzpicture}[auto]
\tikzset{downbendjoin/.style={to path = {(\tikztostart.south) -- ($(\tikztostart.south)!0.5!(\tikztostart.south|-\tikztotarget.north)$) -| ([xshift=-1cm]\tikztotarget.west) -- (\tikztotarget)}, rounded corners}}
\node [draw=black, rectangle, minimum width=4cm, minimum height=3cm] (a) {A};
\node [draw=black, rectangle, minimum width=4cm, minimum height=3cm, below left = of a] (b) {B};
\draw [downbendjoin] (a) to (b);
\end{tikzpicture}
\end{document}
It works correctly as I expected.

The next thing I want to do is add a parameter to the downbendjoin, as the following
\tikzset{downbendjoin/.style n args ={1}{to path = {(\tikztostart.south) -- ($(\tikztostart.south)!#1!(\tikztostart.south|-\tikztotarget.north)$) -| ([xshift=-1cm]\tikztotarget.west) -- (\tikztotarget)}, rounded corners}}
\tikzset{downbendjoin/.default={0.5}}
The purpose is to control the bending point in the path, and I set the default position percentage as 0.5. But this don't work as expected, the generated picture is as the following, the percentage parameter don't work at all.

Did some investigation but don't find the root cause. Can anyone point out what's wrong with my parameter settings?

/.style n args = {1}{...}you can use/.styledirectly which has a single argument by default. – percusse Jul 29 '18 at 09:29.style n args ={1}, it doesn't work as expected and isn't needed anyway. Use as @percusse suggested simply/.style={...}– Ulrike Fischer Jul 29 '18 at 13:07n args = {...}is a generic form to add parameters to style. After remove it it now works. Fell that the tikz syntax is quite not uniformed. Need to learn them case by case. – Eric Sun Jul 29 '18 at 14:12